2013-04-02 36 views
6

Tôi biết đây là một câu hỏi được thảo luận nhiều nhưng tôi không thể hiểu tại sao nó không hoạt động đối với tôi.window.location.href không chuyển hướng

Đây là chức năng của tôi:

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); 

} 

Nếu tôi có các cảnh báo không chú thích hoặc nếu tôi có bugzilla mozilla của mở nó hoạt động tốt, nếu không nó không chuyển hướng đến trang khác.

Mọi ý tưởng tại sao?

+2

Điểm của 'var newLocation = window.location;' là gì? Không có dòng nào được thực hiện sau khi thay đổi window.location. –

+0

Bạn gọi hàm này như thế nào? Bạn có đang làm điều gì khác vào thời điểm đó có thể ảnh hưởng đến thay đổi địa điểm không? – Guffa

Trả lời

3

window.location.replace là cách tốt nhất để mô phỏng một chuyển hướng:

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

Thông tin thêm về việc tại sao window.location.replace là tốt nhất javascript chuyển hướng có thể được tìm thấy right here.

+0

vẫn không hoạt động. – user2235124

+0

Điểm được thực hiện trong câu trả lời bạn liên kết đến là về dấu vết trong lịch sử. Tôi không thấy nó có liên quan như thế nào. –

3

Một số dấu ngoặc đơn bị thiếu.

Thay đổi

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

để

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

Không ưu tiên được trao cho các || so với +.

Xóa cũng mọi thứ sau khi gán window.location: mã này không được thực thi khi trang thay đổi.

+0

vẫn không có may mắn ... – user2235124

+0

@ user2235124 Có những vấn đề khác trong trang của bạn, tôi nghĩ vậy. Và thực tế bạn có một số mã sau khi phân bổ vị trí làm cho tôi nghi ngờ các vấn đề logic lớn hơn. Bạn có thể xây dựng một [fiddle] (http://jsbin.com) cho biết vấn đề của bạn không? –

24

Nếu bạn đang gọi chức năng này thông qua nút gửi. Đây có thể là lý do tại sao trình duyệt không chuyển hướng. Nó sẽ chạy mã trong hàm và sau đó gửi trang thay vì chuyển hướng. Trong trường hợp này, hãy thay đổi loại thẻ của nút của bạn.

+3

Cảm ơn. Giúp rất nhiều. Tôi đã có nút 'loại' của tôi là 'gửi'. Thay đổi nó thành 'reset' và nó hoạt động. – richie

+0

Thiệt tình, vấn đề của loại này, thường là do nhấp chuột hoặc 'enter'-event bubbeling lên, và gửi biểu mẫu. – Alex

+0

Bạn hoàn toàn làm cho ngày của tôi. 12h của google và stackoverflow tìm kiếm cho điều đó. Hàng đầu. – MDaldoss

0

Hãy chắc chắn rằng bạn không gửi một '#' ở cuối URL của bạn. Trong trường hợp của tôi, đó là ngăn chặn window.location.href từ làm việc.

Các vấn đề liên quan