2015-07-03 21 views
5

Tôi đã phá vỡ vấn đề của tôi xuống đến mã đơn giản sau đây:Tại sao IE11 ném một lỗi khi sử dụng window.onbeforeunload?

<!DOCTYPE html> 
<html> 
    <head> 
    <meta charset="utf-8"> 
    <title>IE test</title> 
    <script src="https://code.jquery.com/jquery-1.11.3.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
     $(document).ready(function() { 
     $('.js-click').click(function(e){ 
      window.location.href = 'http://www.google.com/'; 
     }); 
     window.onbeforeunload = function(e){ 
      return 'moving on'; 
     }; 
     }); 
    </script> 
    </head> 
<body> 
    <a href="#" class="js-click">Google</a> 
</body> 
</html> 

này hoạt động như mong đợi trong chrome mà không báo trước hoặc không có lỗi, nhưng trong IE11 nó ném các lỗi sau khi bạn chọn "Stay trên trang này" :

File: 10.0.1.126:8080, Line: 10, Column: 11 

Bất kỳ ý tưởng nào tại sao?

+0

hoạt động tốt cho tôi trong IE 11.0.9600.17842 –

+0

Tôi đang chạy 11.0.9600.17843. Nó không thực sự ném lên một hộp thoại báo lỗi, nhưng tôi thấy thông báo đó trong bảng điều khiển JavaScript. Bạn có nhìn vào đó không? – socketwiz

Trả lời

6

Trên thực tế lỗi xuất phát từ:

window.location.href = 'http://www.google.com/'; 

Và đây chỉ là suy đoán, nhưng tôi tin rằng các nhà phát triển của IE muốn để có thể nắm bắt khi người dùng quyết định không đi theo các liên kết. Vì vậy, bạn có thể thực sự cố gắng nắm bắt khối này và bạn sẽ biết khi nào người dùng không được chuyển hướng (do kết quả của onbeforeupload).

try { 
    window.location.href = 'http://www.google.com'; 
} catch (error) { 
    alert("Y U NO REDIRECT"); 
} 

Nếu bạn console.log(error) bạn sẽ thấy rằng không có thông báo lỗi và số lỗi là -2147467259.

+0

Có vẻ hợp lý với tôi, cảm ơn! – socketwiz

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