如何知道Chrome何时执行外部脚本?
问题描述:
我是一个javascript和chrome devtools菜鸟。我们有一个内容如下的页面:如何知道Chrome何时执行外部脚本?
<head>
..
<script type="text/javascript" src=”path/to/some/external/script1.js>
..
</head>
<body>
… some HTML
<script type="text/javascript”>
..some inline javascript code here
</script>
...some more HTML
<script type="text/javascript”>
..some more inline javascript code here
</script>
</body>
我的理解是,浏览器将按照它在页面上显示的顺序执行javascript。当浏览器执行JS时,我可以让浏览器在不修改script.js的情况下打印一条消息,例如“现在执行script.js”
答
您可以做的唯一事情就是将<script>
标记放在它的正下方,并在那里运行代码。
答
使用MutationObserver,在<head>
var observer = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
if (mutation.type == 'childList') {
[ ].filter.call(mutation.addedNodes, function (node) {
return node.nodeName == 'SCRIPT' && node.src.length;
}).forEach(function (script) {
script.addEventListener('load', function() {
console.log('finished loading', script.src);
});
});
}
});
});
var config = { subtree: true, childList: true };
var target = document;
observer.observe(target, config);
虽然创建以下联脚本作为第一个标签,这会告诉你,当负载事件触发,我不知道如何这涉及到脚本是运行
初步测试(在Firefox)建议的负载事件触发的代码运行后 - 你的里程可能会有所不同
和通常的互联网爆炸警告 - 只适用于IE11 - 对于IE9/IE10,你可以用DOMSubtreeModified
事件做些事情,尽管我很确定这样做会很痛苦。对于IE8及更早版本,我会推荐一条嘲讽消息,告诉用户停止使用垃圾浏览器:p
你知道外部脚本里面有什么吗? –
@收割者,不,我不知道。我将无法修改外部脚本。 – user674669
也许检查一下脚本的源代码,看看它是否会将任何内容导出到窗口对象?如果是这样,那么你可以检查它是否已经加载。 –