IE和Firefox的javascript window.location问题

IE和Firefox的javascript window.location问题,javascript,window.location,Javascript,Window.location,我的窗口上有一些奇怪的行为。IE和Firefox中的位置重定向是我的angular应用程序的一部分。第一次调用window.location=xyz时,它在IE/FF/Chrome中工作正常。在第二个应该登陆google.com的电话中,Chrome做了它应该做的事情,但是IE和FF什么也不做。在IE web控制台中,我可以看到导航被触发,但页面和URL在我的窗口中没有更改。现在,如果我在这个页面上按F5键,它将转到它应该指向的页面,即使顶部的URL没有指向那里(在IE和FF中) 有没有人遇到过

我的窗口上有一些奇怪的行为。IE和Firefox中的位置重定向是我的angular应用程序的一部分。第一次调用window.location=xyz时,它在IE/FF/Chrome中工作正常。在第二个应该登陆google.com的电话中,Chrome做了它应该做的事情,但是IE和FF什么也不做。在IE web控制台中,我可以看到导航被触发,但页面和URL在我的窗口中没有更改。现在,如果我在这个页面上按F5键,它将转到它应该指向的页面,即使顶部的URL没有指向那里(在IE和FF中)

有没有人遇到过这个问题,并且知道如何解决它?我尝试了所有版本的重定向(window.location、window.location.href、windows.location.assign()、window.location.replace()以及angular服务$window),但都没有成功

按下按钮触发的第一个调用(在所有浏览器中都可以正常工作):

按键触发的第二次呼叫(仅适用于Chrome):


使用调用exitModule()函数的代码更新:

注意:应用程序是用angularjs构建的。 exitModule()函数在所有浏览器中都会被调用,这只是IE/FF中不会发生的重定向

HTML:


好吧,我发现了这个问题,我知道如果没有完整的代码,几乎不可能解决这个问题。上面的代码稍微简化了一点,因此没有解决问题。函数exitModule在承诺解析后立即被调用。该呼叫如下所示:

正确

dataService.saveModule().then(exitModule);
我的代码如下所示,exitModule后面有括号,这是错误的。与Chrome相比,我不太理解FF/IE的行为……但那是另一天的事了

错误

dataService.saveModule().then(exitModule());

为什么
$window.location
而不是
window.location
?$window只是AngularJS框架提供的窗口包装服务。您能提供用于捕获事件的代码吗?在FF和IE的最新版本上正常工作。我添加了捕获事件代码。不幸的是,它在您的示例中起作用。在我的代码中似乎有什么不对劲,因为捕获事件的代码工作得很好,只是没有改变页面。我希望有人以前见过这种行为(不是改变,而是在刷新后改变),并能为我指出干扰我代码的正确方向。
<body ng-app="myModule" ng-controller="MainCtrl" ng-keydown="keyPress($event);">
// Handle global key press
$scope.keyPress = function(event){
  if(event.which === 27) { // EscapeKey
    exitModule();
  } else {
    $scope.$broadcast('keyPress', event);
  }
}; 
dataService.saveModule().then(exitModule);
dataService.saveModule().then(exitModule());