Вот хорошая короткая статья о том, как справиться с этим.
Основная проблема заключается в том, что IE & Safari не оценивают узел DOM после загрузки его по умолчанию; это, возможно, функция безопасности.
Основная хитрость, которую нужно исправить, состоит в том, что вы должны написать ее как функцию и установить эту функцию для оценки при событии onload; это гарантирует, что код будет оценен.
Кража , следуя примеру статьи, код будет выглядеть примерно так:
var script = document.createElement('script');
script.setAttribute('src','myjavascriptfile.js');
script.setAttribute('type','text/javascript');
var loaded = false;
var loadFunction = function()
{
if (loaded) return;
loaded=true;
// your code goes here
alert("I'm here!");
};
script.onload = loadFunction;
script.onreadystatechange = loadFunction;
Обновление
Похоже, у вас здесь есть пара переменных. Попробуйте немного упростить - вместо зависимости от MooTools создайте простую базовую HTML-страницу и просто вставьте в нее свой код.
Вот пример:
<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'>
<head>
<meta http-equiv='content-type' content='text/html; charset=utf-8' />
<title>Trial</title>
<meta name='generator' content='BBEdit 9.6' />
<script type="text/javascript">
//<![CDATA[
var script = document.createElement('script');
script.setAttribute('src','myjavascriptfile.js');
script.setAttribute('type','text/javascript');
var loaded = false;
var loadFunction = function(){
if (loaded) return;
loaded=true;
// your code goes here
alert("I'm here!");
};
script.onload = loadFunction;
script.onreadystatechange = loadFunction;
//]]>
</script>
</head>
<body>
</body>
</html>
Это чистый Tidy-ed-код, который должен работать на самых невротических из приемлемых браузеров, а также на IE. Предполагая, что у вас есть исходный файл javascript для загрузки как myjavascriptfile.js
, он должен работать.
Тогда я бы предложил использовать это как myjavascriptfile.js
, чтобы начать с:
// myjavascriptfile.jx
alert("My java script has loaded YAY!!");