2012-06-02 65 views
6

可能重复:
Dynamically Importing JavasScript的JavaScript:在外部定义的变量的访问.js文件

是否有访问哪些来自外部导入的JavaScript .js文件变量的方法吗?

在外部js文件我定义了一个varialbe如如下:

// JavaScript Document 
var PETNAME = "Beauty"; 

动态输入代码后,我希望访问PETNAME变量,但我不明白的定义值:

alert("Pet Name: " + PETNAME); 

什么是错的,有没有办法将外部.js代码的值带入主JavaScript?

谢谢。

回答

10

要动态导入JS,您需要考虑在脚本被浏览器解析并可用时运行的onreadystatechangeload事件。您可以使用此功能:

function getScript(url, callback) { 
    var script = document.createElement('script'); 
    script.type = 'text/javascript'; 
    script.src = url; 

    script.onreadystatechange = callback; 
    script.onload = callback; 

    document.getElementsByTagName('head')[0].appendChild(script); 
} 

而且你可以使用它像这样:

getScript('path to your js file', function(){ 
    alert("Pet Name: " + PETNAME); 
}); 
+0

+1 - 谢谢你的回答。你正确地得到了我的问题的来源,我确实动态地导入了.js文件。我将使用提出的建议。由于你的回答很明确,不需要进一步的补充,我想将它标记为我的问题的*接受答案*。 –

+0

@ Bunkai.Satori:很高兴看到它帮助:) – Sarfraz

2

确保在尝试访问其中定义的变量之前包含外部文件。还要确保外部文件中的变量未在函数内部定义,在这种情况下,它们的范围仅限于该函数。如果这无助于尝试在变量前移除关键字var,则会创建全局变量。

+0

+1,非常感谢你的回答。删除'var'对我来说是新的。此外,我应该提到,我正在动态导入.js代码。我不知道,这是至关重要的答案。谢谢。 –

+1

删除var关键字是非常糟糕的做法,它会创建全局变量并污染全球环境。 – Sarfraz

+0

@Sarfraz,有没有其他方法可以确保变量是全局的?换句话说,除了'var'还有更好的选择吗? –

相关问题