- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
this Mozilla wiki page 底部的注释目前说:“在处理文档的 onload 事件时使用 canvas.drawWindow() 不起作用。在 Firefox 3.5 或更高版本中,您可以在 MozAfterPaint 事件的处理程序中执行此操作以成功将 HTML 内容绘制到页面上的 Canvas 中加载。”这很好,除了我在 Firefox 3.6.6 中尝试过它并且它确实工作,这让我相信它可能过去不起作用,因为一些错误已经被修复。我宁愿不使用 MozAfterPaint,因为它在 3.5 之前的版本中不起作用。是否有重要原因不使用“加载”事件,如果是这样,我可以做些什么来与旧版本的 Firefox 兼容?
编辑:这就是我的代码的工作方式。在我的扩展的 init()
函数中,我调用了 gBrowser.addEventListener("load", MyExtension.onPageLoad, true);
然后 MyExtension.onPageLoad
本质上是:
onPageLoad : function(e) {
var win = e.originalTarget.defaultView;
// create an html:canvas, adjust its size, etc. following the example of the "TabPreview" extension
var ctx = canvas.getContext("2d");
ctx.drawWindow(win, 0, 0, w, h, "rgb(255, 255, 255");
// add the canvas to the DOM
},
最佳答案
我希望这不是“根本”无法工作的情况,而是“无法”正常工作的情况。
传统上,onload
在页面的 html 完成加载时运行。 CSS 和脚本将稍后发生,或者可能同时 1。
这就是引入 MozAfterPaint
的原因。它允许您在 Gecko 获得足够的信息来呈现页面后注入(inject)代码。
您可以通过监听 DOM 突变事件来解决缺少 MozAfterPaint
的问题。它不是那么干净,但我认为如果您使用它来清除和重置 100-200 毫秒的超时,它会起作用。这不应该对性能造成太大影响。当超时最终到期时,您知道该页面至少已经稳定了那么长时间。
[1] 我花了一个星期的时间来追踪一个全局变量,该变量在执行 onload 处理程序期间从未定义变为已定义。它原来是一个脚本标记,它被拉入一个 JS 文件,该文件具有一些顶级代码,并且它与 onload 处理程序并行执行。
关于javascript - 从 "onload"处理程序调用 canvas.drawWindow() 可以吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3199074/
我认为 drawWindow() 方法不适用于实时网站。有办法解决吗? 最佳答案 它目前是 Mozilla 独有的功能,并且仅适用于 XUL 应用程序和 Mozilla 扩展。 我认为您可以通过同源策
有人知道是否有计划添加类似于 Mozilla's 的内容吗? canvas.drawWindow() WebKit? 我无法在 WebKit's mailing lists 上找到关于此的信息或其他地
我正在制作一个基本的 Hangman 游戏,这是我第一次在 Java 中使用 JFrames 和 DrawWindows。这就是我的困惑所在: //这会将我的窗口和面板初始化为全局变量: JFrame
this Mozilla wiki page 底部的注释目前说:“在处理文档的 onload 事件时使用 canvas.drawWindow() 不起作用。在 Firefox 3.5 或更高版本中,您
我使用 addon sdk 创建了一个 Firefox 插件.我正在尝试使用 canvas drawWindow功能。 我有以下代码来使用该函数,其中 ctx 指的是我通过 canvas.getCon
我是一名优秀的程序员,十分优秀!