簡體   English   中英

瀏覽器如何以及何時實現對文檔DOM的實時更改?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM