Я отвечу на вопрос в обновлении, о событиях в IE:
function track_file(evt)
{
if (evt == undefined)
{
evt = window.event; // For IE
}
// Use evt
}
- это классический способ получения согласованного объекта события в браузерах.
После этого я бы использовал регулярные выражения для нормализации URL, но я не уверен, что вы ищете.
[EDIT] Какой-то реальный код, чтобы применить на практике то, что я написал выше ...: -)
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;
}
Это тестовый код, а не рабочий код, очевидно!
Строки с комментариями // ~ показывают альтернативный способ предотвратить переход по ссылке. Это, так или иначе, более эффективно, потому что, если я использую консоль Firebug console.log, любопытно, что возвращаемое значение false неэффективно.
Я использовал здесь поведение «переходить по ссылке или нет», не зная реальной конечной цели.
Как указано в комментариях, RE может быть проще, если использовать имя хоста вместо href ... Я оставляю его как есть, поскольку оно уже закодировано и может быть полезно в других случаях.
В обоих случаях необходимо принять некоторые особые меры предосторожности для обработки особых случаев, таких как localhost, IP-адреса, порты ...
Я избавился от доменного имени, прежде чем перечитать вопрос и убедиться, что это не проблема ... Ну, может быть, это может быть полезно кому-то еще.
Примечание: я показал аналогичное решение в вопросе для оформления ссылок: Редактирование всех внешних ссылок с помощью javascript