簡體   English   中英

IE和Firefox的javascript window.location問題

[英]javascript window.location issue with IE and Firefox

我的window.location在IE和Firefox中重定向,這是我的角度應用程序的一部分,因此我在window.location上有一些奇怪的行為。 第一次調用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()以及角度服務$ 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);
  }
}; 

好的,我發現了這個問題,並且我知道如果沒有完整的代碼,幾乎不可能解決這個問題。 上面的代碼做了一些簡化,因此缺少了這個問題。 一旦解決了承諾,就會立即調用函數exitModule。 呼叫看起來像這樣:

正確

dataService.saveModule().then(exitModule);

我的代碼如下所示,在exitModule之后帶有括號,這是錯誤的。 雖然與Chrome相比,我不太了解FF / IE的行為...但是那是另一天的事情。

錯誤

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM