.append与IE8的问题

时间:2014-07-10 09:38:22

标签: javascript jquery internet-explorer-8

这段剪辑代码:

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

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

修改

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

2 个答案:

答案 0 :(得分:0)

由于我没有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尝试。

答案 1 :(得分:0)

当你可以使用jquery时,你正在混合vanilla js和jquery。我不认为这两个人在这里打得很好。

试试这个jquery解决方案

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