2010-04-14 38 views
15

Tôi cần dừng tất cả chuyển hướng trang qua javascript.cách dừng chuyển hướng trang

Tôi có một số tập lệnh sẽ chuyển hướng trang đến một số vị trí khác. Làm cách nào tôi có thể dừng tất cả chuyển hướng trang trên trang của mình thông qua jquery hoặc javascript.

Trả lời

1

Nếu nó chỉ chuyển hướng thông qua nhấp chuột liên kết, trong jQuery bạn có thể làm điều này:

$(".someClass a").unbind('click'); 

nếu nó là một chuyển hướng trang hiện tại, bạn sẽ cần phải cung cấp cho chúng tôi một số thông tin về loại chuyển hướng này là , vì vậy chúng tôi có thể trợ giúp thêm.

Hy vọng điều này sẽ giúp bạn

+1

giả định tất cả các neo đều bị ràng buộc bởi jQuery. Để chắc chắn một nên sử dụng $ (a) .unbind ('click'), $ (a) .die(), $ (a) .removeAttr ('onClick') – jAndy

+0

Trong jQuery> = 1.7, bạn nên sử dụng '. off() 'thay vì' .unbind() ' – developius

0

AFAIK điều này sẽ không thực hiện được vì chuyển hướng trang có thể xảy ra theo nhiều cách. Ông có thể nhấp vào một thẻ neo, có thể gửi một biểu mẫu với hành động khác nhau, đặt window.location đến một trang khác trên nút bấm và gọi mã máy chủ để chuyển hướng.

Và bạn sẽ không thể phát hiện nhiều trong số này.

2

Nếu tôi hiểu chính xác bạn, bạn cần phải ngăn người dùng điều hướng khỏi trang?

Nếu vậy, câu trả lời Marcos Placona là một phần của nó - mặc dù tất cả những gì bạn thực sự cần là:

$("a").click(function(e) { e.preventDefault(); }); 

Bạn cũng không muốn mọi người nhấn F5 Tôi đoán? Vâng đó là khó khăn hơn. Ngăn chặn mặc định trên nhấn phím, trình duyệt chéo là khủng khiếp. Tuy nhiên, một vài mã mà làm việc trong một số trình duyệt dưới đây:

function disableF5() { // IE 
    document.onkeydown = function() { 
     if (window.event && window.event.keyCode == 116) { // Capture and remap F5 
      window.event.keyCode = 505; 
     } 
     if (window.event && window.event.keyCode == 505) { // New action for F5 
     return false; // Must return false or the browser will refresh anyway 
     } 
    } 
} 
function disableF5v2() { // FIREFOX 
    $(this).keypress(function(e) { 
     if (e.keyCode == 116) { 
      e.preventDefault(); 
    return false; 
     } 
    }); 
} 

Tuy nhiên, vấn đề qua trình duyệt một phần có thể được giải quyết với -

window.onbeforeunload = function(e) { 
    var message = "Your confirmation message goes here.", e = e || window.event; 
    // For IE and Firefox 
if (e) { 
    e.returnValue = message; 
} 
// For Safari 
    return message; 
}; 

Hy vọng rằng tất cả giúp anyway. Đoạn mã cuối cùng là từ một câu hỏi khác trên trang web này here. Rob

+0

Nghiêm túc, ai đó cần bỏ phiếu bình chọn của Rahul. Ông cũng có thể đã nói "bạn không thể có văn bản trên một trang, toàn dừng lại". – LiverpoolsNumber9

2

Bạn đang cố gắng dừng trình chặn khung nội tuyến? Một cái gì đó như:

<script language="JavaScript" type="text/javascript"> 
<!-- 
function breakout_of_frame() 
{ 
    if (top.location != location) { 
    top.location.href = document.location.href ; 
    } 
} 
--> 
</script> 

Nếu có, bạn không thể.

+1

HTML5 hỗ trợ iframe 'sandboxed'. "ngăn nội dung điều hướng ngữ cảnh duyệt web cấp cao nhất". http://www.w3schools.com/tags/att_iframe_sandbox.asp – kev

38

Bạn có thể dừng chuyển hướng bằng cách thực hiện như sau.

<script language="JavaScript" type="text/javascript"> 
    //<![CDATA[ 
     window.onbeforeunload = function(){ 
      return 'Are you sure you want to leave?'; 
     }; 
    //]]> 
</script> 

Không chắc chắn nếu tất cả các trình duyệt đều hỗ trợ điều này nhưng điều đó sẽ thực hiện thủ thuật.

+0

Hoạt động hoàn hảo! Cảm ơn – vrunoa

+0

đã làm việc cho tôi. cảm ơn –

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