我的window.location有一些奇怪的行为在IE和Firefox中重定向,作为我的角度应用程序的一部分。第一次在IE / FF / Chrome中正常工作时调用window.location = xyz。在应该去google.com的第二个电话中,Chrome会做它应该做的事情,但是IE和FF没有做任何事情。在IE Web控制台中,我可以看到导航已被触发但页面和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);
}
};
答案 0 :(得分:0)
好吧,我发现了这个问题,而且我知道如果没有完整的代码,几乎不可能弄清楚这一点。上面的代码有点简化,因此它错过了问题。一旦解析了promise,就会调用函数exitModule。电话看起来像这样:
<强>正确强>
dataService.saveModule().then(exitModule);
我的代码如下所示,exitModule后面的括号是错误的。虽然我不太了解FF / IE与Chrome相比的行为......但那是另一天。
<强>错误强>
dataService.saveModule().then(exitModule());