我有两个单独的.JS文件,即abc.js和xyz.js,在两个JS文件中我有一个方法,如:
abc.js
function OpenPopup(url){
//Code
}
xyz.js
function OpenPopup(url){
// some different implementation
}
然后我将这两个文件包含在HTML页面上,如:
<html>
<head>
<script src="abc.js" id="file1"> </script>
<script src="xyz.js" id="file2"> </script>
</head>
<body>
<button onclick="OpenPopup(url)">Try it</button>
</body>
</html>
当我尝试在某个事件上打开功能时,请点击任意按钮(如上所示),然后
1) 调用哪些文件的方法,即abx.js的OpenPopup或xyz.js的OpenPopup,如同在文件函数名和它的参数中一样?
2) 如果,请说abc.js的OpenPopup被调用。那么我可以如何明确地调用xyz.js文件的OpenPopup函数?
答案 0 :(得分:2)
两周前我正在进行同样的工作,事实证明最后加载的函数会覆盖其他函数,你不能真正预测巫婆会覆盖另一个,因为脚本没有同步加载但是在完美的情况下,最后一个脚本中包含的最后一个函数将覆盖。
现在关于按文件名加载函数,我已尝试过&#34;命名空间&#34;技术,我设法做了这样的事情:
脚本abc.js
var abc = function(){
return {
OpenPopup : function(){
//Code goes here
}
}
}
脚本xyz.js
var xyz = function(){
return {
OpenPopup : function(){
//Code goes here
}
}
}
您可以像这样调用OpenPopup:
abc().OpenPopup();
xyz().OpenPopup();
答案 1 :(得分:1)
通常,要定义的最后一个将被调用。在这种情况下,由于您没有<script>
元素的结束标记,因此根本不会解析第二个脚本。
你不能。通过定义一个与现有函数同名的新函数,在与该函数相同的作用域中,您已经覆盖它并且它将被垃圾收集。
答案 2 :(得分:1)
<强> abc.js:强>
(function(window, document){
function OpenPopup(url){
//Code
}
window.abc = {};
window.abc.OpenPopup = OpenPopup;
})(window, document);
<强> xyz.js:强>
(function(window, document){
function OpenPopup(url){
//Code
}
window.xyz = {};
window.xyz.OpenPopup = OpenPopup;
})(window, document);
<强> HTML 强>
<button onclick="abc.OpenPopup(url)">Try abc.js</button>
<button onclick="xyz.OpenPopup(url)">Try xyz.js</button>
答案 3 :(得分:0)
首先,你必须关闭你的标签,因为这里不起作用。 其次,您只是在相同的范围内覆盖您的方法。 最后,您的代码也会出错,就像您未定义的函数调用一样,&#39; url&#39;所以会引发错误,即url未定义。
下面给出了正确的代码: 试试吧