2009-11-06 22 views
37

Tôi đã tìm kiếm hàng giờ nhưng tôi không thể tìm thấy giải pháp cho việc này.Tôi làm cách nào để nhận URL đích cho sự kiện onbeforeunload?

window.onbeforeunload = warn; 

này không hoạt động:

function warn (e) 
{ 
    var destination = e.href; 
    alert(destination); 
} 

Được rồi, vì vậy để xóa mọi thứ. Nếu người dùng nhấp vào một liên kết trên trang của chính nó, nó rất dễ dàng, bởi vì bạn có thể thêm một eventhandler cho tất cả các liên kết onclick sự kiện, nhưng. Tôi muốn nắm bắt địa chỉ, những gì người dùng gõ vào hộp url của trình duyệt.

+0

Tôi làm việc trên các trang web xử lý dữ liệu và trước khi người dùng rời khỏi trang, tôi đảm bảo tất cả dữ liệu đáp ứng các yêu cầu. Sự kiện onbeforeunload là hữu ích, nhưng cồng kềnh vì cách trình duyệt xử lý nó. Tôi không thể ngăn người dùng rời khỏi trang, nhưng thật tuyệt khi biết họ sẽ đi đâu. Vì nó xảy ra, trong trường hợp của tôi, tôi biết vì nó là một trang web tạo ra chuyển hướng, vì vậy tôi có thể thiết lập một biến phiên. –

Trả lời

55

Vì không thể thực hiện được. Vị trí mới là thông tin riêng tư/nhạy cảm. Không ai muốn bạn biết họ truy cập vào trang web nào khi họ rời khỏi trang web của bạn.

+2

Tôi nghĩ rằng bạn đã nhận được câu hỏi sai, tại sao bạn sẽ sử dụng onbeforeonload nếu bạn đi đến một trang trên trang web của riêng bạn? Điều đó không có ý nghĩa gì cả. Misnyo, bạn có thể làm rõ những gì bạn muốn chính xác? –

+0

Câu trả lời của @bobince dưới đây, rất thú vị: http://stackoverflow.com/a/1687028/538387 – Tohid

+0

@MichelvanEngelen - b/c có thể bạn muốn kích hoạt màn hình tải CSS để cho người dùng biết rằng anh ấy sẵn sàng điều hướng ở đâu đó, rằng họ đã thực sự nhấp vào một liên kết và một cái gì đó đang xảy ra (làm cho trang web cảm thấy phản ứng nhanh hơn, đặc biệt khi phải mất một lúc để điều hướng đến trang khác) – jbyrd

18

Câu trả lời của Kaze là một cách tiếp cận thú vị, nhưng nhìn vào yếu tố tập trung khi trang được điều hướng khỏi không thực sự đáng tin cậy. Một phần vì có sự chậm trễ giữa nhấp chuột vào liên kết và điều hướng khỏi trang (trong thời gian đó người dùng có thể di chuyển tiêu điểm đến một yếu tố khác, nhưng cũng vì liên kết có thể được tập trung (ví dụ: bằng điều khiển bàn phím, hoặc mousedown-without -click) mà không thực sự được sử dụng để di chuyển ra khỏi trang Vì vậy, nếu bạn tập trung vào một liên kết sau đó đóng cửa sổ, nó sẽ nghĩ rằng bạn đang theo liên kết.

Trapping onclick cho mỗi liên kết trên trang (cộng với onsubmit trên mọi hình thức) là đáng tin cậy hơn một chút, nhưng vẫn có thể bị lừa do sự chậm trễ.Ví dụ bạn bấm vào một liên kết, nhưng sau đó trước khi trang mới bắt đầu tải nhấn nút quay lại (hoặc nhấn Escape). cửa sổ cho biết bạn đang theo dõi liên kết.

Tôi muốn nắm bắt địa chỉ, những gì người dùng nhập vào hộp url của trình duyệt.

Không có cách nào sẽ xảy ra. Đó là một sự riêng tư rõ ràng no-no.

+3

Bạn nói đúng, tôi đã xóa câu trả lời của mình. –

+12

Nhưng TẠI SAO bạn đã làm điều đó. Nếu câu trả lời của bạn không hoàn toàn đúng, đừng lo lắng, mọi người có cơ hội đánh giá nó bằng phiếu bầu của họ. Nhưng nó vẫn có thể hữu ích cho người khác. Tôi rất thích xem cách tiếp cận "tập trung cuối cùng" của bạn. – cprcrack

+0

Đồng ý - @KazenoKoe vui lòng thêm câu trả lời của bạn trở lại! –

16

Nếu bạn chỉ muốn nhìn thấy nơi những gì liên kết, bạn có thể sử dụng:

document.activeElement.href 

Nhưng nhận được điểm đến dòng địa chỉ là không thể.

Tôi đã nghe về các giải pháp nơi chúng kích hoạt sự kiện nếu con chuột di chuyển lên dòng địa chỉ (để cảnh báo người dùng rằng có quá trình chưa hoàn tất chưa được xử lý), nhưng loại hack tôi sẽ không bao giờ làm.

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