我正在写一个小的JavaScript代码,它将在html页面加载时加载外部js文件。Safari和Chrome浏览器不会动态地添加<script>标签页面加载
我测试了2种方法。
案例1:使用document.write添加<脚本>标记。 它适用于所有浏览器(IE,FF,Safari,Chrome,Opera)。
案例2:用于DOMElement.appendChild到>标记添加<脚本到<haed>元素。
只适用于IE,FF和Opera。没有适用于Safari和Chrome。
在这两种情况下,我预计新的<脚本>标签正在插入<标头>标签结束。 因此,新的<脚本>标记在处理<主体>之前被评估,并且在window.onload被调用时,“success”变量应该为true。
但它不适用于Safari和Chrome。
任何人都可以告诉这是否应该或不应该工作?谢谢。
<html>
<head>
<title>JavaScript loading test</title>
<script type="text/javascript">
var success = false;
window.onload = function()
{
document.getElementById("result").innerHTML = success? "OK": "ERROR!";
}
// TEST CASE 1.
// Works for all browsers.
document.write('<script type="text/javascript" src="foo.js"></' + 'script>');
// TEST CASE 2.
// Only works for Opera, FireFox, Opera.
// var scriptElem = document.createElement("script");
// scriptElem.setAttribute("type", "text/javascript");
// scriptElem.setAttribute("src", "foo.js");
// var headElem = document.getElementsByTagName("head")[0];
// headElem.appendChild(scriptElem);
</script>
<!-- expected new scrip tag being inserted here. -->
</head>
<body>
Testing...<br/>
<span id="result"></span>
</body>
</html>
“foo.js”只是一行代码。
success = true;
只是一个注释的开始 - 通过稍微修改你的榜样,我好不容易才得到一个不同的行为Opera,Firefox,Safari和Safari,同时逐步完成代码。 – 2010-02-06 09:34:38
顺便说一句,''...'+'script>'仍然无效。在脚本块中保护结束标记字符串文字的最简单有效方法是'<\/script'。 – bobince 2010-02-06 13:26:44
你有没有找到解决这个问题的方法? – Fabii 2015-03-09 20:31:49