2012-01-17 34 views
10

Tôi thực hiện điều hướng với các trang nhưng mã này không hoạt động, vấn đề là gì?window.location.replace() không hoạt động để chuyển hướng trình duyệt

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    window.location.replace("http://newsii.abudayah.com/photo/2)"; } 
    else if(event.keyCode == 39) { // right 
    window.location.replace("http://newsii.abudayah.com/photo/31)"; } 
}); 
}); 
</script> 
+16

Không có câu trả lời nào dường như nhận thấy rằng khung trong mỗi URL nằm bên trong dấu ngoặc kép, khi cần phải ở bên ngoài. Nếu không, việc sử dụng phương pháp thay thế là đúng cú pháp. –

Trả lời

21

Không sử dụng .replace() cho việc này, chỉ cần gán giá trị trực tiếp.

Example

$("body").keydown(function(event) { 

    if(event.keyCode == 37) { // left 
     window.location = "http://newsii.abudayah.com/photo/2"; 
    } 
    else if(event.keyCode == 39) { // right 
     window.location = "http://newsii.abudayah.com/photo/31"; 
    } 

}); 
+4

Tôi phải nói, một câu trả lời với jsfiddle đã có giá trị gấp 10 lần so với cùng một câu trả lời mà không có. –

+0

Đồng ý ... Miễn là đó không phải là mỉa mai tôi cảm thấy. – jondavidjohn

+0

Không, nó không hề mỉa mai. Tôi hiếm khi dành thời gian để làm một jsfiddle, nhưng khi tôi nhìn thấy một câu trả lời với một, tôi nghĩ rằng tôi nên nhận được vào thói quen. –

1

tôi đã sử dụng này và nó làm việc

$(document).ready(function() { 

    $(document).keydown(function(e) { 
     var url = false; 
     if (e.which == 37) { // Left arrow key code 
      url = $('.prev').attr('href'); 
     } 
     else if (e.which == 39) { // Right arrow key code 
      url = $('.next').attr('href'); 
     } 
     if (url) { 
      window.location = url; 
     } 
    }); 

}); 
13

Mã của bạn có lỗi cú pháp. ngoặc cuối cùng của bạn là bên trong quote không bên ngoài ...

Hãy thử:

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    window.location.replace("http://newsii.abudayah.com/photo/2"); } 
    else if(event.keyCode == 39) { // right 
    window.location.replace("http://newsii.abudayah.com/photo/31"); } 
}); 
}); 
</script> 

window.location.replace không được hỗ trợ trong tất cả các trình duyệt. Chỉ định giá trị vị trí luôn được hỗ trợ. Tuy nhiên, lý do để sử dụng thay thế thay vì chỉ định giá trị vị trí là bạn không muốn url hiện tại xuất hiện trong lịch sử hoặc để hiển thị khi sử dụng nút quay lại. Vì đây không phải lúc nào cũng có thể, bạn chỉ cần giải quyết cho những gì có thể:

<script> 
$(document).ready(function() { 
$("body").keydown(function(event) { 
    if(event.keyCode == 37) { // left 
    try { window.location.replace("http://newsii.abudayah.com/photo/2"); } 
    catch(e) { window.location = "http://newsii.abudayah.com/photo/2"; } 
    } 
    else if(event.keyCode == 39) { // right 
    try { window.location.replace("http://newsii.abudayah.com/photo/31"); } 
    catch(e) { window.location = "http://newsii.abudayah.com/photo/31"; } 
    } 
}); 
}); 
</script> 
+0

Đây là một câu trả lời tuyệt vời. Dự phòng thực sự hữu ích. – Rivalus

2

Tôi đã có một vấn đề với nó không hoạt động khi nạp lại cùng một trang trong Chrome. Làm như sau đã làm việc:

window.location.replace("/mypage1.aspx?type=abc"); //redirect to fake page 
    window.location.replace("/mypage.aspx?type=abc"); //redirect to same page 

Đó là một chút hack, nhưng điều này có vẻ là điều duy nhất buộc tải lại trên cùng một trang trong Chrome. IE và FF hoạt động mà không cần chuyển hướng đến một trang giả mạo.

+1

IIUC dựa trên chuyển hướng đầu tiên không diễn ra ngay lập tức để dòng thứ hai được chạy. Nhưng về mặt lý thuyết, nếu điều đầu tiên xảy ra rất nhanh, người dùng sẽ bị kẹt trên url giả mạo và thấy trang lỗi. –

4

Tôi gặp sự cố với điều này trong Chrome. Tôi đã cố tải một trang khác từ cùng một tên miền nhưng đang sử dụng URL tuyệt đối (ví dụ: www.example.com/newurl). Tôi đã thay đổi nó thành một URL tương đối (/newurl) và nó hoạt động ngay bây giờ.

Tôi nghĩ rằng đây là tính năng bảo mật để ngăn người dùng bị chuyển hướng đến trang web độc hại thông qua một số quảng cáo javascript.

+0

Cảm ơn! Đây là trường hợp của tôi! –

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