从选项卡加载事件 MDN 获取原始目标
Get originalTarget from tab load event MDN
我正在尝试按照此示例获取原始目标 DOM:
gBrowser.addEventListener("load", function(aEvent){ s.handleLoadBrowser(aEvent);}, true);
handleLoadBrowser : function (aEvent){
var w = aEvent.originalTarget.defaultView;
}
我为选项卡加载创建了一个事件侦听器:
var tab = gBrowser.addTab("www.google.com");
tab.addEventListener("load", function(aEvent){ s.handleLoadTab(aEvent) }, true);
handleLoadTab : function (aEvent){
var w = aEvent.originalTarget.defaultView;
}
在这里我得到错误:"类型错误:win未定义"。
如何从选项卡事件加载中获取此 dom 对象?
关于你的第一个例子,它应该有效: 我做了类似的事: https://gist.github.com/Noitidart/9287185#file-bootstrap-js-L98 我唯一的区别是我这样做: gBrowser.addEventListener("load", s.handleLoadBrowser, true);
关于第二个示例:var tab = gBrowser.addTab("www.google.com");
tab.addEventListener("load", function(aEvent){ s.handleLoadTab(aEvent) }, true);
你不能这样做,你不会向选项卡添加加载事件,选项卡是一个 xul 元素,你可以抓取并移动它。您可以执行此操作tab.linkedBrowser.contentWindow.addEventListener('load'
但是在第一个页面加载后它将不再存在。
这段代码对我有用:
var tab = gBrowser.addTab("data:text/html,<b>hi</b>");
tab.linkedBrowser.contentWindow.addEventListener("load", handleLoadTab, true);
//tab.linkedBrowser.contentWindow.addEventListener("DOMContentLoaded", handleLoadTab, true);
function handleLoadTab(aEvent){
var w = aEvent.originalTarget.defaultView;
w.alert('load done')
}
此外,这是另一个示例,说明如何在加载一个选项卡时收听第一个。我在这个例子中使用了gBrowser.loadOneTab
,但它可以与addTab
互换:https://gist.github.com/Noitidart/0f076070bc77abd5e406
var tab = gBrowser.loadOneTab('data:text/html,<span class="profilist-build-icon-1">backround of this span is of icon on desktop</span><input type="button" value="applyCss"><input type="button" value="removeCss"> Change File on Desktop to: <input type="button" value="Release Img"><input type="button" value="Beta Img"><input type="button" value="Aurora Img"><input type="button" value="Nightly Img">', {inBackground:false});
var mobs = new window.MutationObserver(function(mutations) {
mutations.forEach(function(mutation) {
var attrVal = tab.getAttribute(mutation.attributeName);
console.log(mutation.attributeName, attrVal);
if (mutation.attributeName == 'progress' && attrVal == 'true') {
//at this point can addEventListener for DOMConentLoaded and it will as document hasnt loaded yet
tab.linkedBrowser.contentDocument.addEventListener('DOMContentLoaded', function() {
tab.linkedBrowser.contentDocument.removeEventListener('DOMContentLoaded', arguments.callee, false);
alert('loadOneTab finished loading', tab.linkedBrowser.contentDocument.body.innerHTML)
}, false);
mobs.disconnect();
}
/*
if (mutation.attributeName == 'progress' && attrVal == '') {
//cannot add addEventListener for DOMConentLoaded here as document is already loaded, it will never fire
alert('tab done loading');
mobs.disconnect();
}
*/
});
});
mobs.observe(tab, {
attributes: true
});
console.log(tab._fullyOpen)
相关文章:
- 从ajax请求中获取原始文本
- 获取原始HTML并将其重新呈现为HTML
- DimpleJS-在getTooltipText回调中获取原始数据
- 如何在文件打开和调用图像区域选择时获取原始图像大小
- jQuery 获取原始文本(未转义),以便通过下划线模板进一步解析
- 如何使用jQuery获取原始状态文本
- 如何从Bootstrap日期时间选择器获取原始日期数据
- 如何在angular js中从github获取原始自述文件后将其转换为html格式的文档
- 在 Angular 指令中获取原始包含的内容
- 使用 .on 获取原始元素
- 获取原始变量值
- 如何从 Javascript 中的轨道加载的图像中获取原始图像尺寸
- JavaScript 中的 try-catch:如何获取原始错误的堆栈跟踪或行号
- 从十六进制字符串中获取原始十六进制
- jQuery 在缓存中预加载图像并在其他函数继续之前获取原始图像大小
- 如何从事件中获取原始元素
- 从选项卡加载事件 MDN 获取原始目标
- PHP 和 RegEx:在 XML 标记之间获取原始数据,即使整个 XML 似乎无效
- 通过javascript获取原始/未修改的请求字符串
- GWT JavaScriptObject:获取原始 json 字符串