我的window.location有一些奇怪的行爲,在IE和Firefox中重定向,作爲我的角度應用程序的一部分。當調用window.location = xyz時,它第一次在IE/FF/Chrome中正常工作。在第二個應該去google.com的電話會議上,Chrome會做它應該做的事情,但IE和FF不會做任何事情。在IE web控制檯中,我可以看到導航已被觸發,但頁面和URL並未在我的窗口中更改。現在,如果我在此頁面上按F5,它將轉到它應該訪問的頁面,即使頂部的URL沒有指向那裏(在IE和FF中)。IE和Firefox的javascript window.location問題
有沒有人遇到這個問題,並知道如何解決它?我試過所有版本的重定向(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'? – 2014-10-01 01:11:08
$ window只是AngularJS框架提供的一個包裝窗口服務。 – jimmy 2014-10-01 01:14:25
你能否提供用於捕獲事件的代碼? – rhgb 2014-10-01 01:31:08