Je répondrai à la question de la mise à jour, sur les événements dans IE:
function track_file(evt)
{
if (evt == undefined)
{
evt = window.event; // For IE
}
// Use evt
}
est la voie classique pour obtenir objet d'événement cohérent entre les différents navigateurs. Après cela, j'utiliserais les expressions rationnelles pour normaliser l'URL, mais je ne suis pas sûr de ce que vous attendez.
[EDIT] Une partie du code réel pour mettre en pratique ce que je l'ai écrit ci-dessus ... :-)
function CheckTarget(evt)
{
if (evt == undefined)
{
// For IE
evt = window.event;
//~ event.returnValue = false;
var target = evt.srcElement;
var console = { log: alert };
}
else
{
target = evt.target;
//~ preventDefault();
}
alert(target.hostname + " vs. " + window.location.hostname);
var re = /^https?:\/\/[\w.-]*?([\w-]+\.[a-z]+)\/.*$/;
var strippedURL = window.location.href.match(re);
if (strippedURL == null)
{
// Oops! (?)
alert("Where are we?");
return false;
}
alert(window.location.href + " => " + strippedURL);
var strippedTarget = target.href.match(re);
if (strippedTarget == null)
{
// Oops! (?)
alert("What is it?");
return false;
}
alert(target + " => " + strippedTarget);
if (strippedURL[1] == strippedTarget[1])
{
//~ window.location.href = target.href; // Go there
return true; // Accept the jump
}
return false;
}
code de test de cela, et non le code de production, évidemment!
Les lignes avec // commentaires indiquent la manière alternative d'empêcher le clic sur le lien de faire le saut. C'est, d'une certaine manière, plus efficace car si j'utilise le fichier console.log de Firebug, curieusement le retour false est inefficace.
J'ai utilisé ici le comportement "suivre le lien ou non", ne connaissant pas le véritable but final.
Comme souligné dans les commentaires, le RE peut être plus simple en utilisant hostname au lieu de href ... Je le laisse car il était déjà codé et pourrait être utile dans d'autres cas.
Certaines précautions spéciales doivent être prises dans les deux cas pour gérer des cas spéciaux, tels que localhost, adresses IP, ports ...
Je me suis débarrassé du nom de domaine, avant de relire la question et de voir qu'il n'y avait pas de problème ... Eh bien, peut-être que cela peut être utile à quelqu'un d'autre.
Note: Je montre une solution similaire dans une question pour décorer les liens: Editing all external links with javascript
Est-ce un document que vous ouvrez avec le navigateur? –
Voir http://stackoverflow.com/questions/9404793/check-if-same-origin-policy-applies – Seth