CanvasRenderingContext2D.drawWindow() - Web APIs 编辑

Deprecated

This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

The deprecated, non-standard and internal only CanvasRenderingContext2D.drawWindow() method of the Canvas 2D API renders a region of a window into the canvas. The contents of the window's viewport are rendered, ignoring viewport clipping and scrolling.

This API cannot be used by Web content. It is synchronous, and as such can't capture cross-origin (out of process) iframes with Fission.  If you're using it from an extension, you should switch to tabs.captureTab.  If you're writing chrome code, you probably want WindowGlobalParent.drawSnapshot from the parent process.

Syntax

void ctx.drawWindow(window, x, y, w, h, bgColor [, flags]);

Parameters

window
The Window to render.
x
The x-axis coordinate of the window.
y
The y-axis coordinate of the window.
w
The width of the window.
h
The height of the window.
bgColor
A DOMString that specifies the color the canvas is filled with before the window is rendered into it. This color may be transparent/translucent. It is given as a CSS color string (for example, rgb() or rgba()).
Notes:
  • If "rgba(0,0,0,0)" is used for the background color, the drawing will be transparent wherever the window is transparent.
  • Top-level browsed documents are usually not transparent because the user's background-color preference is applied, but iframes are transparent if the page doesn't set a background.
  • If an opaque color is used for the background color, rendering will be faster because we won't have to compute the window's transparency.
flags Optional
Used to better control the drawWindow call. Flags can be ORed together.
ConstantValueDescription
DRAWWINDOW_DRAW_CARET0x01Show the caret if appropriate when drawing.
DRAWWINDOW_DO_NOT_FLUSH0x02Do not flush pending layout notifications that could otherwise be batched up.
DRAWWINDOW_DRAW_VIEW0x04Draw scrollbars and scroll the viewport if they are present.
DRAWWINDOW_USE_WIDGET_LAYERS0x08Use the widget layer manager if available. This means hardware acceleration may be used, but it might actually be slower or lower quality than normal. It will, however, more accurately reflect the pixels rendered to the screen.
DRAWWINDOW_ASYNC_DECODE_IMAGES0x10Do not synchronously decode images - draw what we have.

Example

This method draws a snapshot of the contents of a DOM window into the canvas. For example,

ctx.drawWindow(window, 0, 0, 100, 200, 'rgb(255,255,255)');

... would draw the contents of the current window, in the rectangle (0,0,100,200) in pixels relative to the top-left of the viewport, on a white background, into the canvas. By specifying "rgba(255,255,255,0)" as the color, the contents would be drawn with a transparent background (which would be slower).

It is usually a bad idea to use any background other than pure white "rgb(255,255,255)" or transparent, as this is what all browsers do, and many websites expect that transparent parts of their interface will be drawn on white background.

With this method, it is possible to fill a hidden IFRAME with arbitrary content (e.g., CSS-styled HTML text, or SVG) and draw it into a canvas. It will be scaled, rotated and so on according to the current transformation.

Ted Mielczarek's tab preview extension uses this technique in chrome to provide thumbnails of web pages, and the source is available for reference.

Specifications

Not part of any current specification or draft. This is a non-standard and internal only API.

Browser compatibility

BCD tables only load in the browser

See also

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:27 次

字数:6650

最后编辑:8年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文