【问题标题】:IE8 crashes with AngularJS and dynamic contentIE8 因 AngularJS 和动态内容而崩溃
【发布时间】:2016-01-31 01:12:37
【问题描述】:

我有以下代码:

<blockquote class='mt20'>
    <p><span>&ldquo;</span><span>{{iq.quote}}</span><span>&rdquo;</span></p>
    <footer><cite class="dark-grey">{{iq.author}}</cite></footer>
</blockquote>

由于某种原因,这导致 IE8 崩溃。我做了很多调试,发现当 iq 对象只包含引号时:

{quote:"some quote"}

浏览器不会崩溃。它只会与引用和作者一起崩溃。

我使用一个特殊的函数来获取我的数据。它看起来像:

this.get = function(){
    var arr = {};
    if(!arr.length){
        $http.get('url').success(function(data){
            $.extend(arr, data);
        });
    }
    return arr;
}

我使用它是因为对象是自动绑定的,所以我不必观看它。当视图尝试更新时,似乎崩溃发生在将数据扩展到对象时。有什么想法吗?

【问题讨论】:

    标签: javascript ajax angularjs internet-explorer-8 dynamic-content


    【解决方案1】:

    我能够通过将使用 {{}} 的内容绑定更改为 ng-bind 来解决此问题。

    <blockquote>
        <p><span>&ldquo;</span><span ng-bind="iq.quote"></span><span>&rdquo;</span></p>
        <footer><cite ng-bind="iq.author"></cite></footer>
    </blockquote>
    

    我假设 HTML5 页脚元素与 {{}} 内容绑定和动态更新相结合导致内存泄漏导致 IE8 崩溃,但我无法证明这一点。我知道当内容被设置并且没有改变时(比如如果你使用 $http.get 而不是我的方法会发生什么),浏览器不会崩溃。我也在使用:

    var obj = {}
    

    和:

    delete obj.key
    

    我把它改成了:

    var obj = new Object()
    

    基于这篇文章:https://markfeimer.wordpress.com/2014/05/23/internet-explorer-8-javascript-delete-keyword-bug/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-07-03
      • 2018-11-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-16
      • 1970-01-01
      • 2012-02-22
      相关资源
      最近更新 更多