Si vous en avez vraiment besoin, vous ne pouvez pas simplement obtenir tous les liens, les formes et les objets DOM qui ont un gestionnaire de modifier l'url et le rendre ceux d'attendre jusqu'à ce que vous avez fait ce que vous voulez.
Pour les liens, vous obtenez par getElementsByTagName, vérifiez si le href commence avec rien, mais un # et il suffit d'ajouter votre onbeforeunload fonction ajouter onclick (qui sera invoquée devant le href est regardé).
De même pour les formes, mais avec onsubmit.
Et enfin, pour les éléments de changer le href JavaScript, vous devriez assurez-vous que lorsque vous ajoutez le lsitener que vous appelez votre onbeforeunlaod fonction (ou, si vous utilisez DOM0 ou DOM1 auditeurs, vous pouvez simplement ajouter un peu de classe et ensuite utiliser un script global qui vérifie tous les éléments avec la classe et l'ajoute à l'écouteur d'événement avec une fermeture.
Mais vous devriez normalement être en mesure d'éviter l'utilisation de cet évènement (probablement à l'aide des cookies pour stocker la chose que vous avez voulu envoyer toutes les x secondes et permettant, dans le pire des cas, avoir un coup d'oeil la prochaine fois que l'utilisateur charge une page et, dans le meilleur des cas, être en mesure d'envoyer une requête Ajax à onbeforeunload ou onunload qui, même si elle envoie uniquement les en-têtes http, woudl vous permettre d'obtenir ce que vous voulez).