У меня какое-то странное поведение при перенаправлении window.location в IE и Firefox как часть моего углового приложения. При вызове window.location = xyz в первый раз он отлично работает в IE/FF/Chrome. При втором вызове, который должен идти на google.com, Chrome делает то, что должен, но IE и FF ничего не делают. В веб-консоли IE я вижу, что навигация запущена, но страница и URL-адрес не изменились в моем окне. Теперь, если я нажму F5 на этой странице, он перейдет на страницу, на которую он должен, даже если URL-адрес вверху не указывает туда (как в IE, так и в FF).
Кто-нибудь когда-нибудь сталкивался с этой проблемой и знает, как ее решить? Я пробовал все версии перенаправления (window.location, window.location.href, windows.location.assign(), window.location.replace(), а также угловой сервис $window) безуспешно.
Первый вызов, вызванный нажатием кнопки (отлично работает во всех браузерах):
$scope.pressButton = function() {
var url = 'xyz/index.html';
$window.location = url;
};
Второй вызов, вызванный нажатием клавиши (работает только в Chrome):
function exitModule() {
$window.location = 'http://www.google.com';
console.log('window.location'); // still pointing to the old page
}
Обновление кода, вызывающего функцию exitModule():
Примечание. Приложение создано с помощью angularjs. Функция exitModule() вызывается во всех браузерах, это просто перенаправление, которого нет в IE/FF.
HTML:
<body ng-app="myModule" ng-controller="MainCtrl" ng-keydown="keyPress($event);">
JS:
// Handle global key press
$scope.keyPress = function(event){
if(event.which === 27) { // EscapeKey
exitModule();
} else {
$scope.$broadcast('keyPress', event);
}
};
$window.location
вместоwindow.location
? - person im_brian_d   schedule 01.10.2014