Como posso obter o URL de destino para o evento onbeforeunload?

Eu procurei por horas, mas não consegui encontrar uma solução para isso.

window.onbeforeunload = warn; 

Isso não funciona:

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

Ok, então para limpar as coisas. Se o usuário clicar em um link na própria página, será fácil, porque você pode adicionar um manipulador de events a todos os links do evento onclick, mas. Eu quero pegar o endereço, o que o usuário digita na checkbox de URL do navegador.

Porque isso não pode ser feito. O novo local é uma informação privada / confidencial. Ninguém quer que você saiba quais sites eles visitam quando saem do site.

A resposta de Kaze é uma abordagem interessante, mas olhar para o foco do elemento quando a página é navegada para longe não é realmente confiável. Em parte porque há um atraso entre o clique do link e a navegação longe da página (durante a qual o usuário pode mover o foco para algum outro elemento, mas também porque um link pode ser focado (por exemplo, controle de teclado ou mouse sem -clique sem realmente ser usado para navegar para fora da página Então, se você focasse um link e fechasse a janela, ele pensaria que você estava seguindo o link.

Trapping onclick para cada link na página (mais onsubmit em cada formulário) é um pouco mais confiável, mas ainda pode ser enganado devido ao atraso. Por exemplo, você clica em um link, mas antes que a nova página comece a carregar, pressione o botão Voltar (ou pressione Escape). Novamente, se você fechar a janela, achará que está seguindo o link.

Eu quero pegar o endereço, o que o usuário digita na checkbox de URL do navegador.

Não há como isso acontecer. É uma óbvia privacidade não-não.

Se você quiser apenas ver qual destino de link, você pode usar:

 document.activeElement.href 

Mas obter o destino da linha de endereço não é possível.

Já ouvi falar de soluções em que elas triggersm um evento se o mouse se mover para a linha de endereço (para avisar o usuário de que há processos inacabados que não foram tratados), mas esse tipo de invasão eu nunca faria.