Để hoàn thành alex trả lời (ngày 13 tháng 12 '10)
Một mục tiêu tiêm thông minh hơn có thể được thực hiện với mã này:
/*
* For all links in the current page...
*/
$(document.links).filter(function() {
/*
* ...keep them without `target` already setted...
*/
return !this.target;
}).filter(function() {
/*
* ...and keep them are not on current domain...
*/
return this.hostname !== window.location.hostname ||
/*
* ...or are not a web file (.pdf, .jpg, .png, .js, .mp4, etc.).
*/
/\.(?!html?|php3?|aspx?)([a-z]{0,3}|[a-zt]{0,4})$/.test(this.pathname);
/*
* For all link kept, add the `target="_blank"` attribute.
*/
}).attr('target', '_blank');
Bạn có thể thay đổi các ngoại lệ regrec bằng cách thêm nhiều tiện ích mở rộng trong (?!html?|php3?|aspx?)
cấu trúc nhóm (hiểu regrec này tại đây: https://regex101.com/r/sE6gT9/3 ).
và đối với phiên bản không có jQuery, hãy kiểm tra mã bên dưới:
var links = document.links;
for (var i = 0; i < links.length; i++) {
if (!links[i].target) {
if (
links[i].hostname !== window.location.hostname ||
/\.(?!html?)([a-z]{0,3}|[a-zt]{0,4})$/.test(links[i].pathname)
) {
links[i].target = '_blank';
}
}
}