Спасибо за чтение.
У меня есть несколько скриптов, которые скомпилированы следующим образом:
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 - это просто опечатка, в настоящем коде я использую более подходящие имена функций, но я изменил их здесь для удобства чтения. Это может быть масштаб, хотя я согласен с Джо Уайтом, что это не должно быть проблемой. С JavaScript (один из моих слабых языков), кто знает? FunctionOne вызывается из заголовка или текста HTML-документа.
Мне также нравится идея добавить FuncTwo в конец второго скрипта, чтобы вообще избежать таймера. Чище и так очевидно, как только кто-то указывает вам на это ...
Я обновлюсь после того, как поработаю над этим следующим.
Обновите снова:
Привет всем,
У меня теперь он работает в FF, IE и Chrome, но Opera, похоже, вообще отказывается загружать любые файлы .js. Я думаю, что это просто какая-то проблема с Opera ( Opera: файл .js не загружается ), и он будет работать с остальными тремя Дайте вам знать, как это получается.