2013-04-02 83 views
6

我知道這是一個很多討論的問題,但我無法弄清楚爲什麼它不適合我。window.location.href不重定向

這是我的函數:

function ShowComments(){ 

alert("fired"); 
var movieShareId = document.getElementById('movieId'); 
//alert("found div" + movieShareId.textContent || movieShareId.innerText); 
//alert("redirect location: /comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/"); 
window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/"; 
var newLocation = window.location; 
//alert("full location: " + window.location); 

} 

如果我有警報註釋掉,或者如果我有Mozilla的Bugzilla的打開它工作正常,否則它不會重定向到其他頁面。

任何想法爲什麼?

+2

'var newLocation = window.location;''是什麼意思? window.location更改後不應執行任何行。 –

+0

你是怎麼調用這個函數的?你在做什麼其他事情可能會干擾位置的變化? – Guffa

回答

3

window.location.replace是仿效重定向的最佳方法:爲什麼window.location.replace是JavaScript重定向可以發現right here最好

function ShowComments(){ 
    var movieShareId = document.getElementById('movieId'); 
    window.location.replace("/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/"); 
} 

更多信息。

+0

仍然不起作用。 – user2235124

+0

您鏈接到的答案中提到的一點是關於歷史中的痕跡。我不明白它的相關性。 –

3

缺少一些括號。

變化

window.location.href = "/comments.aspx?id=" + movieShareId.textContent || movieShareId.innerText + "/"; 

window.location = "/comments.aspx?id=" + (movieShareId.textContent || movieShareId.innerText) + "/"; 

沒有優先考慮的||相比+

刪除window.location賦值之後的所有內容:此代碼不應該在頁面更改時執行。

+0

仍然沒有運氣... – user2235124

+0

@ user2235124我想你的網頁還有其他問題。而且在位置分配後你有一些代碼的事實讓我懷疑更大的邏輯問題。你可以建立一個[小提琴](http://jsbin.com)顯示你的問題? –

24

如果您通過提交按鈕調用此函數。這可能是瀏覽器不重定向的原因。它將運行該函數中的代碼,然後提交頁面而不是重定向。在這種情況下,更改按鈕的類型標籤。

+3

謝謝。幫了很多。我的'type'按鈕是'submit'。將其更改爲「重置」並且它工作正常。 – richie

+0

這種問題實際上是由於點擊或「輸入」事件引起的,並提交表單。 – Alex

+0

你絕對是我的一天。 12小時的谷歌和stackoverflow搜索。最佳。 – MDaldoss

0

確保你不發送 '#'在您的網址末尾。在我的情況下,這是阻止window.location.href工作。