[英]How and when do browsers implement real-time changes to a document's DOM?
我的網站動態地將外部Javascript文件嵌入到head標簽中。 外部Javascript定義了一個全局變量myString =“data”。 myString在什么時候可以在網站中訪問Javascript?
<html>
<head>
<script type="text/javascript">
myString = null;
external = document.createElement("script");
//externalScript.js is one line, containing the following:
//myString = "data";
external.setAttribute("src", "externalScript.js");
external.setAttribute("type", "text/javascript");
document.getElementsByTagName("head")[0].append(external);
alert(myString);
<script>
</head>
<body>
</body>
</html>
此代碼在Chrome和IE中警告null(當我認為它會警告“數據”時),即使此時DOM已加載到externalScript.js中。 什么時候外部腳本.js實際上是由瀏覽器評估的,我在什么時候可以訪問myString的新值?
當onload
事件觸發該腳本元素時,您可以訪問它,如下所示:
external = document.createElement("script");
external.onload = function() { alert(myString); };
script.onreadystatechange= function () { //for IE, the special kid...
if (this.readyState == 'complete') alert(myString);
}
external.setAttribute("src", "externalScript.js");
external.setAttribute("type", "text/javascript");
document.getElementsByTagName("head")[0].appendChild(external);
這只是附加一個函數,一旦腳本加載就運行,執行任何依賴於腳本的代碼。 對前一個答案的更正:正如seanmonstar在評論中指出的那樣(謝謝!),你確實在這里確實需要一個IE異常,因為它有點“特殊”......
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.