【问题标题】:.append issue with IE8.append IE8 的问题
【发布时间】:2014-07-10 09:38:21
【问题描述】:

这段代码:

    var trackEvent = (function(event) {
        var script = document.createElement('script');
        script.setAttribute('type', 'text/javascript');
        $(script).html( event );
        $('head').append($(script));
    });

在 IE8 中不起作用(JQuery 版本为 1.9)。它只是向<head> 添加了一个新的script 标记,其中包含一些内容。我看到here 可能是append 的问题,但是在这种情况下如何解决呢?

编辑

我的解决方案是直接执行代码,而不是嵌入它。无论如何,.append 和 IE8 的问题仍然存在,这个问题可能对其他用户有用。

【问题讨论】:

  • 为什么要附加一个新的脚本标签?事件变量中有什么?是你要运行的代码吗?
  • 你从哪里得到event的内容?
  • @RoToRa - 调用 trackEvent 函数 (trackEvent(event)) 时,event 是可执行代码。
  • 这不是我问的。我问,你从哪里弄来的?
  • @RoToRa - 我手动分配它。

标签: javascript jquery internet-explorer-8


【解决方案1】:

由于我没有 IE8(只有 IE11),我无法重现该问题。但我可以看到,也许旧版本可能不会自动执行插入的脚本。 您可以尝试以下解决方法:

var trackEvent = (function(event) {
    var script = document.createElement('script');
    script.setAttribute('type', 'text/javascript');

    // Wrap code in a function
    var wrappedEvent = 'function __myTest() { ' + event + '}';
    $(script).html(wrappedEvent);
    $('head').append($(script));

    // Call that function
    __myTest();
});

我做了一个JSFiddle给你试试。

【讨论】:

    【解决方案2】:

    当您可以使用 jquery 时,您正在混合 vanilla js 和 jquery。我不认为两者在这里配合得很好。

    试试这个 jquery 解决方案

    var trackEvent = (function(event) {
      var script = $('<script>');
      script.attr('type','text/javascript');
      script.html(event);
      $('head').append(script);
    });
    

    【讨论】:

    • 它不起作用。问题在于.append 方法。
    • 啊,我明白了,我用谷歌搜索了一下,发现这是 ie7 和 ie8 中的一个问题。对不起,帮不上忙!虽然如果你让我知道在头部添加脚本标签的目的是什么,那么也许你可以找到不同的解决方案?
    猜你喜欢
    • 1970-01-01
    • 2012-12-26
    • 2021-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多