【发布时间】:2010-11-01 01:07:53
【问题描述】:
感谢阅读。
我有几个类似于以下内容的脚本:
scriptone.js
function FunctionOne(){
// Do a bit of work...
// Include a second javascript file, scripttwo.js
// that contains a function called FunctionTwo.js
var scrb = document.createElement('script');
scrb.type = 'text/javascript';
scrb.src = 'http://www.example.com/scripttwo.js?bunchofargs=varied';
// Append it to the head.
document.getElementsByTagName('head')[0].appendChild(scrb);
// Can't run the second function directly, because it may not be loaded quite yet,
// So use the Waiter function.
Interval = setInterval("Waiter()", 10);
// All done.
return;
}
function Waiter(){
if(window.FunctionTwo) {
clearInterval(Interval);
FunctionTwo();
}
}
scripttwo.js
function FunctionTwo(){
document.write('something based on calling page');
}
这适用于 FF 和 IE,但不适用于 Opera 或 Chrome。在 Chrome/Opera 中,脚本一中的一切似乎都正常。然而,scripttwo.js 中不应该发生的事情实际上并没有发生。好像没有包含 scripttwo.js。
知道为什么这不适用于 Opera 或 Chrome?
也许我正在使用不兼容的东西,或者是否有我不知道的安全功能?所有文件都在同一个域中。
注意 很好的回复 - 非常感谢!
FuncionOne 在这里只是一个错字,在实际代码中,我使用了更好的函数名称,但为了便于阅读,我在这里更改了它们。这可能是范围,尽管我同意 Joe White 的观点,认为这不应该是一个问题。使用 JavaScript(我的弱语言之一),谁知道呢? FunctionOne 从 HTML 文档的头部或正文中调用。
我也喜欢将 FuncTwo 添加到脚本 2 末尾的想法,以完全避免计时器。更干净,一旦有人向你指出它就会变得如此明显......
我会在接下来的工作后更新。
再次更新:
大家好,
我现在可以在 FF、IE 和 Chrome 中使用它,但 Opera 现在似乎完全拒绝加载任何 .js 文件。我认为这只是某种 Opera 问题 (Opera: .js file won't load),并将继续处理其他三个问题。让你知道结果如何。
【问题讨论】:
标签: javascript browser cross-browser