我有一个asp.net mvc应用程序,我试图将我的所有JavaScript移动到js文件。现在我有一个名为sharedfunctions.js的地方,它在整个地方使用。
问题是,如果我将一些代码移动到调用sharedfunctions.js文件中的方法的js文件中,它似乎不再起作用。
能够在js文件中分解公共代码并允许它们实际正常工作的最佳方法是什么?
答案 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>');
}