IE和Firefox的javascript window.location问题

时间:2014-10-01 00:54:44

标签: javascript window.location

我的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);
  }
}; 

1 个答案:

答案 0 :(得分:0)

好吧,我发现了这个问题,而且我知道如果没有完整的代码,几乎不可能弄清楚这一点。上面的代码有点简化,因此它错过了问题。一旦解析了promise,就会调用函数exitModule。电话看起来像这样:

<强>正确

dataService.saveModule().then(exitModule);

我的代码如下所示,exitModule后面的括号是错误的。虽然我不太了解FF / IE与Chrome相比的行为......但那是另一天。

<强>错误

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