Internet Explorer в режиме стандартов IE 7 при обновлении дважды вызывает маршрутизатор в магистрали - PullRequest
2 голосов
/ 08 февраля 2012

Это легко воспроизвести с помощью приведенного ниже кода.

Проблема заключается в том, что URL-адрес с хэш-кодом (любой хэш, например, http://localhost:8000/error/#whatever) перемещается, а затем обновляется, Internet Explorer вызывает универсальную ловушкуroute * url category (и alerts), но затем приступает к удалению хэша и повторному вызову маршрута.

Страница работает, как и предполагалось, с Webkit, Firefox, Opera и т. д., при обновлении только одно оповещение запускается.Тестирование проводилось локально. Все используемые библиотеки являются последними версиями.

Примечание: в IE8 и IE9 механизм рендеринга по умолчанию будет использовать режим стандартов IE7 из-за использования типа документа html5 - в 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 Ответ

1 голос
/ 01 марта 2012

Это ошибка в Backbonejs, и с тех пор исправлено .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...