Hoe kan ik de bestemmings-URL voor de onbeforeunload-gebeurtenis krijgen?

Ik heb uren gezocht, maar ik kon hier geen oplossing voor vinden.

window.onbeforeunload = warn;

Dit werkt niet:

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

Ok, dus om de zaken op te helderen. Als de gebruiker op een link op de pagina zelf klikt, is het gemakkelijk, omdat je een eventhandler kunt toevoegen aan alle links op click event, maar. Ik wil het adres zien, wat de gebruiker typt in het url-vak van de browser.


Antwoord 1, autoriteit 100%

Omdat het niet kan. De nieuwe locatie is privé/gevoelige informatie.
Niemand wil dat je weet welke sites ze bezoeken wanneer ze je site verlaten.


Antwoord 2, autoriteit 54%

Als u alleen wilt zien welke linkbestemming, kunt u gebruiken:

document.activeElement.href 

Maar het is niet mogelijk om de bestemming van de adresregel op te halen.

Ik heb gehoord van oplossingen waarbij ze een gebeurtenis afvuren als de muis naar de adresregel gaat (om de gebruiker te waarschuwen dat er onvoltooide processen zijn die nog niet zijn afgehandeld), maar dit soort hack zou ik nooit doen doen.


Antwoord 3, autoriteit 28%

Het antwoord van Kaze is een interessante benadering, maar kijken naar de elementfocus wanneer de pagina wordt weggenavigeerd, is niet echt betrouwbaar. Deels omdat er een vertraging is tussen het klikken op de link en de navigatie weg van de pagina (gedurende welke tijd de gebruiker de focus kan verplaatsen naar een ander element, maar ook omdat een link kan worden gefocust (bijv. door toetsenbordbediening of mousedown-zonder muis) -klik) zonder daadwerkelijk te worden gebruikt om van de pagina weg te navigeren. Dus als u een link focust en vervolgens het venster sluit, zou het denken dat u de link volgde.

onclickvoor elke link op de pagina (plus onsubmitop elk formulier) is iets betrouwbaarder, maar kan nog steeds voor de gek gehouden worden vanwege de vertraging. U klikt bijvoorbeeld op een link, maar voordat de nieuwe pagina begint te laden, drukt u op de terugknop (of drukt u op Escape). Nogmaals, als je het venster sluit, denkt het dat je de link volgt.

Ik wil het adres zien, wat de gebruiker typt in het url-vak van de browser.

Dat zal nooit gebeuren. Het is een duidelijke privacy no-no.

Other episodes