tôi sẽ trả lời các câu hỏi trong bản cập nhật, về các sự kiện trong IE:
function track_file(evt)
{
if (evt == undefined)
{
evt = window.event; // For IE
}
// Use evt
}
là cách cổ điển để có được đối tượng sự kiện nhất quán trên các trình duyệt.
Sau đó, tôi sẽ sử dụng các regex để bình thường hóa URL, nhưng tôi không chắc chắn những gì bạn chăm sóc.
[EDIT] Một số mã thực để đưa vào thực hành những gì tôi đã viết ở trên ... :-)
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;
}
Đó của mã kiểm tra, không phải mã sản xuất, rõ ràng!
Các dòng có // ~ nhận xét hiển thị cách thay thế ngăn nhấp chuột vào liên kết để thực hiện bước nhảy. Đó là, bằng cách nào đó, hiệu quả hơn bởi vì nếu tôi sử dụng console.log của Firebug, tò mò trả về false là không hiệu quả.
Tôi đã sử dụng ở đây hành vi "theo liên kết hay không", không biết mục đích cuối cùng thực sự.
Như đã nêu trong các nhận xét, RE có thể đơn giản hơn bằng cách sử dụng tên máy chủ thay vì href ... Tôi để nguyên vì nó đã được mã hóa và có thể hữu ích trong các trường hợp khác.
Một số biện pháp phòng ngừa đặc biệt nên được thực hiện trong cả hai trường hợp để xử lý các trường hợp đặc biệt, như localhost, địa chỉ IP, cổng ...
Tôi đã loại bỏ tên miền, trước khi đọc lại câu hỏi và thấy nó không phải là vấn đề ... Vâng, có lẽ nó có thể hữu ích cho người khác.
Lưu ý: Tôi thấy một giải pháp tương tự trong một câu hỏi để trang trí liên kết: Editing all external links with javascript
Đây có phải là tài liệu bạn mở bằng trình duyệt không? –
Xem http://stackoverflow.com/questions/9404793/check-if-same-origin-policy-applies – Seth