【问题标题】:Including JavaScript at runtime is not working in IE8在运行时包含 JavaScript 在 IE8 中不起作用
【发布时间】:2014-02-14 00:50:55
【问题描述】:

以下代码在 IE6 和 IE7 以及几乎所有版本的 FF 中运行。它只是在 IE8 中不起作用。一旦我将脚本标签添加到 HTML->HEAD 元素中,它就不起作用了,我看不到浏览器中加载的脚本(脚本中的警报不显示)。我看到标签已插入 HTML-HEAD 中。

var head = document getElementsByTagName('head')[0];
// Check if the script is already loaded.
if (head ){
    var script = document.createElement('script');
    script.type = 'text/javascript';
    script.language = 'JavaScript';
    script.src = '/Tolven/scripts/' + jsFileName;
    head.appendChild(script);       
}

有人有这个问题吗?或者有什么线索可以解决这个问题?

【问题讨论】:

  • 您使用的是哪个框架和版本? ($$ 不是原生 JS 方法)。
  • 是prototype.js,我现在把问题改成用js方法了。
  • 您是否在 ie8 中收到一些错误消息?

标签: javascript


【解决方案1】:

如果此脚本在<head> 标记中,则在解析和执行此脚本时,head 不存在。所以,if (head) 当然是false

您正在使用 JS 框架——所以请随意使用它的工具。并且在使用之前不要忘记包含您的框架。

<!-- if your are using mootools -->
<script type="text/javascript" src="mootools.js"></script>
<script type="text/javascript">
  window.addEvent('domready', function() {
    // Your code...
  });
</script>

<!-- if your are using prototype -->
<script type="text/javascript" src="prototype.js"></script>
<script type="text/javascript">
  document.observe("dom:loaded", function() {
    // Your code...
  });
</script>

【讨论】:

  • 当我尝试调用 .js 文件中的 JS 方法时运行此脚本。在运行 JS 方法之前,我将检查脚本是否不包含,如果不包含则包含它。当这段代码运行时,确定 就在那里。我还提到我看到了 HTML 中包含的脚本标记。谢谢
【解决方案2】:

考虑使用像 RequireJSLABjs 这样的库,它们可以很好地在运行时包含脚本。

【讨论】:

    【解决方案3】:
    var head = document getElementsByTagName('head')[0];
    

    应该是

    var head = document.getElementsByTagName('head')[0];
    

    此修改后脚本似乎可以工作。

    【讨论】:

    • 抱歉打错了。我使用原型查询 DOM,我用 JS 方法替换了 $$() 调用。
    【解决方案4】:

    这确实有效。在运行时插入的其中一个脚本中存在错误(仅在 IE8 中发生)。最终它不会在接下来加载的页面中执行警报。不过感谢您的回答。

    【讨论】:

      猜你喜欢
      • 2012-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-19
      • 2013-08-22
      • 1970-01-01
      • 2012-04-18
      • 1970-01-01
      相关资源
      最近更新 更多