Tamamlanan alex için cevap (Aralık 13 '10)
Bu kodla daha akıllı bir enjeksiyon hedefi yapılabilir:
/*
* 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');
(?!html?|php3?|aspx?)
Grup yapısına daha fazla uzantı ekleyerek normal ifade istisnalarını değiştirebilirsiniz (şu normal ifadeyi buradan anlayabilirsiniz: https://regex101.com/r/sE6gT9/3 ).
jQuery olmayan bir sürüm için aşağıdaki kodu kontrol edin:
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';
}
}
}