2013-09-24 45 views
0

我試圖獲取TestService.Server.WWW_SERVER_URL,但TestService.Server未定義。 當我打電話給test1()時,它運行良好。但我無法訪問對象文字測試服務器。 有其他方法嗎?在另一個JavaScript文件中使用javascript文件中聲明的全局變量

的test.html

<script type="text/javascript" language="javascript" src="TestService.js"></script> 
<script type="text/javascript" language="javascript"> 
    function test() { 
     alert("TestService.Server.WWW_SERVER_URL[" + TestService.Server.WWW_SERVER_URL + "]"); 
     //test1(); 
    } 
</script> 

TestService.js

document.write("<scr" + "ipt type='text/javascript' src='TestServer.js'><" + "/scr" + "ipt>"); 

var TestService = { 
    Server: TestServer, 
    Delimiter: "" 
}; 

function test1() { 
    test2(); 
} 

TestServer.js

var TestServer = { 
    WWW_SERVER_URL: "http://www.test.com" 
}; 


function test2() { 
    alert("test2 has been called!"); 
} 

回答

0

你在你的TestService.js有這個

document.write("<scr" + "ipt type='text/javascript' src='TestServer.js'><" + "/scr" + "ipt>"); 

var TestService = { 
    Server: TestServer, 
    Delimiter: "" 
}; 

您要設置TestService屬性與TestServer其處理不當加載但因爲你不給時間,新添加的腳本加載

TestService.Server將評估爲undefined,因爲TestServer還不存在

設置一個onload功能,將增加你的腳本,然後設置你的TestService.Server變量時,其加載

var TestService = { 
    Server: null, 
    Delimiter: "" 
}; 

function test1() { 
    test2(); 
} 

window.onload = function() { 
    var head = document.querySelector("head"); 
    var script = document.createElement("script"); 
    script.setAttribute("type", "text/javascript"); 
    script.setAttribute("src", "TestServer.js"); 

    head.addEventListener("load", function(event) { 
     if (event.target.nodeName === "SCRIPT"){ 
      TestService.Server = TestServer; 
     } 
    }, true); 

    head.appendChild(script); 
} 
0

如果您動態添加腳本,則IE,Firefox和Chrome將全部以異步方式下載腳本 。

Firefox和Chrome將等到所有異步請求返回, 然後將它們連接在 的DOM,但IE的順序執行這些腳本,他們是 返回過線順序執行腳本。

source

在你的情況,你不能出示擔保TestServer.jsTestService.js之前得到執行。所以我會建議你改變你訪問全局變量跨文件的方式。

您可以在TestService.js之前將TestServer.js添加到您的html中,以便它們可以逐個執行。

無論如何,不​​建議做這樣的事情,你可以把它們包裝在你自己的命名空間中。另外,最好在使用之前檢查要使用的跨文件變量是否未定義。

相關問題