2009-07-15 7 views
2

je besoin d'un javascript sur une page qui pourrait attraper un événement chaque fois que je clique sur quelque chose et ce clic pourrait conduire à réorienter, ouvrir dans une nouvelle fenêtre, etc.Catch tous les événements de navigateur susceptibles de rediriger/open nouveau navigateur

Comme les liens n'ouvrent parfois pas directement une nouvelle fenêtre, ils appellent une fonction javascript (window.open, document.location.href). Est-il possible que je peux les attraper et modifier l'URL.

Merci.

+0

Avez-vous trouvé une bonne solution qui attire tout, pas juste clique? – Domi

+0

@Domi, Non, mais vous pouvez faire une solution alternative: utiliser un modèle d'observateur comme backbone.js et créer un observateur pour document.location.href, window.open etc. et implémenter également la solution proposée ci-dessous. –

+0

Comment pouvez-vous observer une variable? Vous voulez dire vérifier sale en utilisant 'setInterval'? Je l'ai déjà vérifié et le surcharger avec 'Object.defineProperty' ne fonctionnera pas. – Domi

Répondre

0

Vous pouvez réaliser cela en utilisant l'événement click de liens. Si vous utilisez jQuery, il pourrait aller quelque chose comme ceci:

$("a").click(function() { 
    /* Open the site in a new window */ 
    var strNewURL = "http://example.com/redirect.php?id=" + this.href; 
    window.open(strNewURL, "myFancyNewWindow"); 

    /* Stop the browser following the original link */ 
    return false; 
}); 

Cela montre comment vous pouvez ajouter un peu plus à l'avant de l'envoyer href l'utilisateur il y a via votre propre script de redirection.

Si vous souhaitez uniquement faire cela pour certains liens, vous pouvez affiner le sélecteur, par ex. $("#content a"). Voir également: https://developer.mozilla.org/En/DOM/Window.open et http://docs.jquery.com/Events/click.

+0

J'ai réécrit la question. Je sentais que je ne l'ai pas expliqué correctement. J'espère que cela vous donnera une bonne compréhension de ce que je cherche exactement. Merci. –

0

Vous pouvez affecter un gestionnaire onclick au document.body et détecter quel élément a été cliqué à l'aide du event.target, ce qui signifie essentiellement la délégation d'événements.

En ayant la cible d'événement, vous pouvez tout savoir sur l'élément cliquée, comme son tagName, et tous les attributtes élément:

document.body.onclick = function(event){ 
    if (event.target.tagName == 'A'){ //Handle anchors 
    var url = event.target.href; 
    // redirect, window.open, or whatever you want... 

    event.preventDefault(); 
    } 
} 
+0

Merci. Et s'il y a une fonction javascript qui fait un calcul et utilise window.open ou window.location.href. Y a-t-il un moyen d'attraper de telles choses? –

Questions connexes