我正在开发Firefox扩展并具有以下代码:
function initialize() {
// For accessing browser window from sidebar code.
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);
var gBrowser = mainWindow.gBrowser;
gBrowser.onload = function() {
alert('loaded');
};
}
Run Code Online (Sandbox Code Playgroud)
我使用.onload而不是DOMContentLoaded或readystatechange,因为我需要等到所有其他javascript在我运行之前已经完成加载页面.
关于为什么触发多个事件的原因(以及不应该触发事件的事情)的任何想法?
解
根据MatrixFrog的建议,这是我遇到的解决方案:
function initialize() {
// For accessing browser window from sidebar code.
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIWebNavigation)
.QueryInterface(Components.interfaces.nsIDocShellTreeItem)
.rootTreeItem
.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
.getInterface(Components.interfaces.nsIDOMWindow);
var gBrowser = mainWindow.gBrowser;
if (gBrowser.addEventListener) {
gBrowser.addEventListener("load",pageLoaded,true);
}
}
function pageLoaded(aEvent) {
if ((aEvent.originalTarget.nodeName == …Run Code Online (Sandbox Code Playgroud) 是否有跨平台方法从firefox扩展中截取屏幕截图?
理想情况下,我希望能够截取dom元素的屏幕截图(无论它是否在页面上可见),例如:
var screenshot = screenshot(document.getElementById('example');
任何指针或建议都会很好,搜索https://developer.mozilla.org/只会产生他们在各种指南中使用的截图.