JavaScript - Bloquer modification de liens à la volée?

Salut à tous ^ ^)

Je sais pas trop où poster ma question entre ici et le forum “Internet général”, mais bon je pense que j’ai plus de chances d’avoir ma réponse ici.

Pour la question, la voici: comment empêcher les sites de modifier des liens à la volée (sans désactiver purement et simplement javascript sur le navigateur)? C’est-à-dire qu’un lien sur une page s’affiche avec une adresse donnée, mais lorsque vous cliquez dessus, un script JS change le lien et vous renvoie sur une autre page.

Exemple avec Google (bien connu je pense):

Sur l’image précédente, j’ai fait une recherche “test” et lorsque je passe la souris sur le 1er résultat, on voit le lien mire.ipadsl.net. Maintenant si je clique sur le lien, je passe par une page intermédiaire de Google (cf encadré en rouge en bas), qui s’en sert pour ses statistiques, pour ensuite être redirigé vers le site recherché.

A titre perso, j’ai testé ça:
jsbin.com…

C’est une page HTML toute simple dont le code est le suivant:

<!DOCTYPE html>
<html>

<SCRIPT LANGUAGE="JavaScript">
function setLink(link){
    document.getElementById('myLink').href= link
}
</SCRIPT>
 </HEAD>
 <BODY>
<A ID="myLink" HREF="http://www.google.com/" onmouseover="setLink('http://www.yahoo.com/')" onmouseout="setLink('http://www.google.com/')">Lien Google</A>  
 </BODY>
</html>

(vous pouvez tester ici: jsbin.com…)

Le script (fonction setLink) associé aux événements onmouseover/onmouseout permet de faire croire à l’utilisateur qu’il va aller sur Google, alors qu’il est renvoyé vers Yahoo. Ca marche aussi avec onlick et compagnie… Là c’est pas méchant, mais ça permet de planquer pas mal de trucs beaucoup moins sympa :frowning:

Bref, est-ce qu’il existe un moyen (genre une extension FireFox ou autre) qui permette de continuer à utiliser javaScript, tout en bloquant ce genre de choses?

Merci par avance pour les réponses :wink:
Edité le 01/10/2011 à 13:25

Petit uppage discret :wink:

Personne n’a une idée sur le sujet? Sinon j’avais pas testé, mais le code précédent ne marche pas sur IE (pour changer…) enfin la manip’ est faisable, c’est juste qu’il faut un code spécifique.

Sous fx, tu dois pouvoir “bloquer” ça au niveau des scripts utilisateurs (ça existe pour les CSS, faut voir pour javascript) en redéfinissant éventuellement le setter href.

J’ai jamais essayé et je t’avoue ne pas avoir touché javascript depuis un certain temps :slight_smile:

Quand tu parles de scripts utilisateurs, tu penses à des extensions genre GreaseMonkey? Parce que je suis pas non plus un expert en javaScript, mais en gros ça voudrait dire qu’il faudrait bloquer ce genre de script?

document.getElementById(ID).href

Et de manière plus générale, tous les trucs style getElementBy[ID/Class/Name].href? Ou est-ce qu’il est possible de mettre la propriété href en “lecture seule” (je mets entre guillemets parce que ça n’a pas vraiment de sens mais c’est pour imager)?

Alors, oui et non, oui car getElementById() tu dois pouvoir la surcharger pour renvoyer un élément DOMNode (ça renvoie un truc du genre de mémoire^^) avec une propriété href en lecture seule, et non car je disais le faire directement sur DOMNode.

Maintenant, je ne sais pas si cela est possible.

Ouais tout ça me semble bien tendu du slip :confused: (enfin disons plutôt que je m’y connaît pas assez pour faire ça). Reste plus que l’option “désactiver javaScript” pour les sites qui utilisent ce genre de pratiques alors… :frowning:

Tu as NoScript pour gérer ça par règle.

Perso, je n’utilise plus qu’Adblock vu que ça fait un peu too much.