Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我如何知道Chrome何时执行外部脚本?_Javascript - Fatal编程技术网

Javascript 我如何知道Chrome何时执行外部脚本?

Javascript 我如何知道Chrome何时执行外部脚本?,javascript,Javascript,我是javascript和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

我是javascript和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>

..
..
…一些HTML
…这里还有一些内联javascript代码

我的理解是浏览器将按照页面上显示的顺序执行javascript。当浏览器执行JS时,我是否可以让浏览器在不修改script.JS的情况下打印“Now executed script.JS”这样的消息?您唯一能做的就是在它下面放置一个
标记,并在那里运行代码。

使用MutationObserver,创建以下内联脚本作为
中的第一个标记

虽然,这将告诉您加载事件何时触发,但我不确定这与正在运行的脚本有何关系

初始测试(在Firefox中)表明加载事件在代码运行后触发-您的里程可能会有所不同


通常的互联网爆炸警告-仅在IE11中有效-对于IE9/IE10,您可以使用
domsubtreemedited
事件来做一些事情,尽管我很确定这样做会很痛苦。对于IE8和更早的版本,我建议使用一条嘲弄性的消息,告诉用户停止使用垃圾浏览器:p

请详细说明。把脚本标签放在哪里?我只想知道剧本的顺序execution@user674669“就在它下面”。与控制台('script1.js已完成!')一样如果你只是想知道脚本执行的顺序,你可以保证它在标记中是按顺序进行的。你知道外部脚本中有什么吗?@D-reaper,不,我不知道。我将无法修改外部脚本。也许可以检查该脚本的源代码中的内容,并查看它是否将任何内容导出到窗口对象?如果是,那么您可以检查它是否已加载。
    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);