我可以从另一个调用一个js文件。

时间:2010-01-09 17:10:50

标签: javascript jquery file

我有一个asp.net mvc应用程序,我试图将我的所有JavaScript移动到js文件。现在我有一个名为sharedfunctions.js的地方,它在整个地方使用。

问题是,如果我将一些代码移动到调用sharedfunctions.js文件中的方法的js文件中,它似乎不再起作用。

能够在js文件中分解公共代码并允许它们实际正常工作的最佳方法是什么?

5 个答案:

答案 0 :(得分:5)

只要页面上的所有.js文件都被引用,所有这些文件中的函数/变量将在页面加载后被其他任何人访问

我强调最后一点,因为它可能是你问题的根本原因。可能是.js文件加载的顺序是错误的。

如果您有一些立即执行的javascript(例如,它不是由页面事件触发),那么它可能会在您的sharedfunctions.js文件包含在页面之前开始执行。在这种情况下,sharedfunctions.js中的函数在其他javascript执行时字面上不存在。

看看你是否可以查看消除这些问题的顺序。例如,尝试并确保您的sharedfunctions.js作为页面上的第一个脚本文件加载。

恕我直言,这比试图破解你现有的js文件直接加载其他js文件的内容更好。

答案 1 :(得分:1)

您认为是否会使用伪造的功能覆盖您的功能?如果在定义函数之前就是这种情况,您可以检查是否已经定义了它。

if(typeof yourFunctionName =='function')

答案 2 :(得分:0)

最好的方法是将它全部放在一个文件中,并在开发环境中,将其分解为每个类的文件或您使用的方法,只需按正确的顺序包含它们。

如果你想动态地包含一个JS(使用moo-tools快捷方式,尽管你可以简单地使用他们的资产库)

$$('head')[0].adopt(new Element('script',{'type':'text/javascript','src':'path to js file'}));

答案 3 :(得分:0)

一些图书馆解决方案

Dojo: dojo.require("my.package.name");

jQuery: $.getScript("url/to/script.js", function() { /* callback */ });

答案 4 :(得分:-1)

使用此模式:

function IncludeJavaScript(jsFile)
{
  document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>'); 
}