我正在尝试动态地将js(和css)文件包含到这样的网页中:
index.html - > loader_a.js - > a_foo.js,a_bar.js,a_foo.css等。
虽然这在FF中没有问题(使用appendChild),但我无法在IE6中运行它。
我已经尝试了各种可用的解决方案(在这里添加了dom节点,ajax调用和eval以及更多来自http://ntt.cc/2008/02/10/4-ways-to-dynamically-load-external-javascriptwith-source.html)和there以及其他类似帖子#2013676但是它没有做它应该做的事情
当我用DebugBar检查时,我看到我的包含文件(例如a_foo.js)实际已加载,但其内容为空 - 在其他包含的文件(1级/直接)上显示此内容,所以我假设有问题...
我得到的“错误”总是未定义的对象,这是o / c b / c我调用的函数没有正确加载,所以没有多大的帮助。我在包含上没有任何错误。
我已经验证了javascripts,所以那些都可以。
有没有人有这个的最终解决方案? 如果有帮助,我可以重新创建我的测试并发布一些代码。
谢谢, 问候, 托马斯
示例HTML:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML lang=en><HEAD><TITLE>Test</TITLE>
<script type="text/javascript" src="mmtest_files/jquery-1.4.2.min.js"></script>
<script type="text/javascript" src="mmtest_files/multiload.js"></script>
<script type="text/javascript" >
function init2() {
// using the data from the loaded js files
var a= mmf("a");
document.getElementById('status').innerHTML = "Variable set:" + a;
}
// magic...
include(['mmt.js'],init2);
</script>
<BODY >
<H2>Test me!</H2>
<SPAN id=status>status old</SPAN>
</BODY></HTML>
JS 1是来自答案1的多重载荷
JS2是一个测试包括:
功能mmf(param) { return“Called with”+ param; }
答案 0 :(得分:1)
您需要在ie中使用document.write,以便并行加载脚本。
请参阅:Loading Scripts Without Blocking
我有一个脚本btw:Loading Multiple Javascript Files In Order Asynchronously
(可能需要在Chrome中增加一些功能)
<强>更新强>
有一个回调函数,它是可选的。它可用于将依赖脚本耦合到文件。 EG:
function myjQueryCode() {
// ...
}
include(['jquery.js','jquery-ui.js'], myjQueryCode);
这样,你的jquery依赖代码将在文件加载后运行。