web-dev-qa-db-ja.com

onbeforeunloadイベントのリンク先URLを取得するにはどうすればよいですか?

何時間も検索しましたが、これに対する解決策が見つかりませんでした。

window.onbeforeunload = warn;

これは機能しません:

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

わかりましたので、物事をクリアします。ユーザーがページ自体のリンクをクリックすると、すべてのリンクonclickイベントにイベントハンドラーを追加できるため、簡単です。ユーザーがブラウザのURLボックスに入力したアドレスを取得したい。

50
misnyo

できないからです。新しい場所はプライベート/機密情報です。誰もあなたがあなたのサイトを離れるときにどのサイトを訪問するのか知りたがらない。

64

リンク先を確認するだけの場合は、次を使用できます。

document.activeElement.href 

ただし、住所行の宛先を取得することはできません。

マウスがアドレス行まで移動するとイベントが発生するソリューションを聞いたことがあります(未処理の未処理のプロセスがあることをユーザーに警告するため)が、この種のハックは決してしません。

21
Espen Schulstad

Kazeの答えは興味深いアプローチですが、ページから移動するときに要素のフォーカスを見ることは、実際には信頼できません。リンクのクリックとページからのナビゲーションとの間に遅延があるため(その間にユーザーがフォーカスを他の要素に移動する場合がありますが、リンクがフォーカスされる場合もあります(たとえば、キーボード制御またはmousedown-without -クリック)実際にページから移動するために使用されていないので、リンクにフォーカスしてウィンドウを閉じた場合、リンクをたどっていると思われます。

ページ上のすべてのリンクに対してonclickをトラップする(すべてのフォームでonsubmitを追加する)方が若干信頼性が高くなりますが、遅延のためにだまされる可能性があります。たとえば、リンクをクリックした後、新しいページの読み込みが開始される前に、戻るボタンを押します(またはEscapeキーを押します)。繰り返しますが、ウィンドウを閉じると、リンクをたどっていると考えられます。

ユーザーがブラウザのURLボックスに入力したアドレスを取得したい。

これまでに起こる方法はありません。それは明らかなプライバシーです。

18
bobince