IE8与AngularJS和动态内容崩溃

时间:2015-10-30 14:56:53

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

我有以下代码:

<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;
}

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

1 个答案:

答案 0 :(得分:0)

我能够通过使用{{}}更改内容绑定到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/