IE 7标准模式下的Internet Explorer在刷新时在骨干网中调用两次路由器

时间:2012-02-08 10:34:36

标签: internet-explorer backbone.js

使用以下代码可以轻松重现。

问题是当带有散列(任何散列,例如http://localhost:8000/error/#whatever)的URL被导航到然后刷新时,Internet Explorer会调用catch-all route * url类别(和警报),但随后继续删除散列并再次重新启动该路线。

该页面按照预期与Webkit,Firefox,Opera等一起工作,刷新时只触发一个警报。测试是在本地完成的。使用的所有库都是最新版本。

注意:在IE8和IE9中,由于使用了html5 doctype,渲染引擎将默认为IE7标准模式 - 在IE8和IE9标准模式下,这可以按预期工作。

<html><head>
<script type="text/javascript" src="{{ STATIC_URL }}js/jquery171.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}js/underscore131.js"></script>
<script type="text/javascript" src="{{ STATIC_URL }}js/backbone091.js"></script>
<script>

App = {
    start: function(){
        new App.CatalogRouter();
    }
}

App.CatalogRouter = Backbone.Router.extend({
    routes: {
        'checkout/' : 'checkout',
        '*url' : 'category'
    },

    category : function(url){
        alert('should only trigger once');
    },

    checkout: function(){

    }
})

$(function(){
    App.start();
    Backbone.history.start();
});
</script>
</head>
<body></body>
</html>

1 个答案:

答案 0 :(得分:1)

这是Backbonejs中的一个错误,此后一直是fixed