我可以帮您翻译成中文:我可以从一个JS文件中调用另一个JS文件吗?

5

我有一个ASP.NET MVC应用程序,我正在尝试将所有的JavaScript代码移动到js文件中。目前我有一个名为sharedfunctions.js的文件,它被广泛使用。

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

最好的方式是如何将公共代码因素化在js文件之间,并使它们能够正常工作?


重复:https://dev59.com/ZHVD5IYBdhLWcg3wTZ1m 和 http://stackoverflow.com/questions/1899494/an-other-way-to-load-a-js-file-in-js-code。并添加我的链接http://codepaste.net/o6gq2n。 - ram
5个回答

5
只要在该页面引用了所有 .js 文件,一旦页面加载完成,所有这些文件中的函数/变量都可以被其他文件访问。我强调最后一点,因为它可能是你问题的根本原因。可能是 .js 文件加载的顺序有误。如果你有一些立即执行的 JavaScript(例如不是由页面事件触发的),那么它很可能会在共享的 sharedfunctions.js 文件被包含在页面上之前开始执行。在这种情况下,sharedfunctions.js 中的函数在其他 JavaScript 执行时实际上不存在。请尝试查看事物的顺序以消除这些问题。例如,尽量确保 sharedfunctions.js 作为页面上的第一个脚本文件加载。在我看来,这比尝试修改现有的 js 文件直接加载其他 js 文件的内容更可取。

1

你认为问题是你正在用虚假的函数覆盖你的函数吗?如果是这种情况,在定义函数之前,你可以检查是否已经定义了它。

if(typeof yourFunctionName == 'function')


0

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

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

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

0
一些库解决方案

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

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


-1
请使用这个模式:
function IncludeJavaScript(jsFile)
{
  document.write('<script type="text/javascript" src="' + jsFile + '"></scr' + 'ipt>'); 
}

1
如果在错误的位置编写,它可能会破坏整个文档。 - Itay Moav -Malimovka
虽然它确实允许一个文件包含另一个文件,但是由文件本身管理跨文件依赖关系肯定是非常糟糕的做法。此外,“被包含”的文件在JavaScript解释器完全加载调用函数的文件之前仍不会被解析 - 在这种情况下,它并没有有效地导入可以被导入文件中的其他代码使用的任何JavaScript代码。 - Rob Levine

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接