2017-06-14 52 views
2

我是一個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」

+0

你知道外部腳本里面有什麼嗎? –

+0

@收割者,不,我不知道。我將無法修改外部腳本。 – user674669

+0

也許檢查一下腳本的源代碼,看看它是否會將任何內容導出到窗口對象?如果是這樣,那麼你可以檢查它是否已經加載。 –

回答

1

您可以做的唯一事情就是將<script>標記放在它的正下方,並在那裏運行代碼。

+0

請您詳細說明。把腳本標籤放在哪裏?我只想知道腳本執行的順序 – user674669

+1

@ user674669「在它下面」。正如'

1

使用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