在DOM的上下文中,body.onLoad
或'[element] .onload'之前会window.onload
触发吗?
我的想法是,我希望在整个页面加载完成之前执行一个脚本,但是在某些DOM元素出现之后。
基本上,只要有一个元素X,我想获取X的内容并使用该内容启动异步作业,但我必须获取X的内容的唯一方法是等待X加载,因为我正在进行扩展。因此X.onload
或window.onload
之前可以body.onload
被认为是可靠触发的吗?
具体来说,我正在开发Chrome扩展程序,因此暂时如果订单在Safari或IE中有所不同,我不一定需要知道,尽管我总是对其原因和方式感兴趣。< / p>
JS-Perf测试here。它们是不确定的,因为图像在测试运行之前被缓存,使得200万像素的加载速度比空DIV快。
对任何有关如何进行有意义测试的建议持开放态度。
谢谢!
答案 0 :(得分:1)
根据Teemu和RobW的输入,(以及支持文档here删除事件监听器并在清单中设置的脚本中运行内联代码"run_at":"document_end"
将获得所需的结果。
对于在manifest.json
中可能遇到此问题的其他人 "content_scripts": [
{
"matches": ["TARGET_URL"],
"js": ["myscript.js"],
"run_at" : "document_end"
}
],
在myscript.js中:
function reqListener () {
console.log(this.responseText);
}
var oReq = new XMLHttpRequest();
oReq.onload = reqListener;
oReq.open("get", "yourFile.txt", true);
oReq.send();
在DOM解析之后执行此gaurantees,但在子元素加载之前,更早地开始我们的AJAX请求。 (这显然不是生产代码,只是其他人要遵循的示例代码模式)。
感谢所有评论!