【问题标题】:Dynamic (2 levels) Javascript/CSS Loading IE6动态(2 级)Javascript/CSS 加载 IE6
【发布时间】:2010-07-05 21:30:59
【问题描述】:

我正在尝试将 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 我调用的函数没有正确加载,所以没有多大帮助。我没有收到关于包含的任何错误。
我已经验证了 javascript,所以应该没问题。

有人对此有最终的解决方案吗? 如果有帮助,我可以重新创建我的测试并发布一些代码。

谢谢, 问候, 托马斯

示例 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(参数) { 返回“调用”+参数; }

【问题讨论】:

    标签: javascript css dynamic internet-explorer-6


    【解决方案1】:

    您需要在 ie 中使用 document.write,以便并行加载脚本。

    见:Loading Scripts Without Blocking

    顺便说一句,我有这样一个脚本:Loading Multiple Javascript Files In Order Asynchronously

    (可能需要在 Chrome 中进行一些改进)


    更新

    有一个回调函数,它是可选的。它可用于将依赖脚本耦合到文件。例如:

    function myjQueryCode() {
       // ...
    }
    
    include(['jquery.js','jquery-ui.js'], myjQueryCode);
    

    这样你的 jquery 依赖代码将在文件加载后运行。

    【讨论】:

    • 我会尝试的 - 但我马上有一些问题/cmets:您网站源代码中的 js url (galambalazs.extra.hu/multiload/multiload.js) 不再起作用(需要是 galambalazs.fw .hu)。然后你检查“typeof callback ===”fucntion”“——是fucntion,为什么?最后,脚本是依赖于 WebKit 还是没有它也能工作? (WebKit/i.test(navigator.userAgent))
    • 是的,链接指向旧版本,但您可以查看代码的源代码。 webkit hack 是我要考虑的东西,它是一个临时修复。是的,它可以跨浏览器工作。关于回调,我更新了答案。
    • 哦,现在我明白了,我打错了typeof callback === "function" 部分。这不是故意的。我马上更新。
    • 我更新了指向美国托管网站的链接。这也应该更快。
    • 仍然不适合我 - 同样的丢失对象问题 - 请参阅原始帖子中的示例代码
    猜你喜欢
    • 1970-01-01
    • 2011-04-14
    • 2020-04-24
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-03
    • 2010-11-15
    • 1970-01-01
    相关资源
    最近更新 更多