पूरा करने के लिए एलेक्स ने उत्तर दिया (13 दिसंबर 10)
इस कोड के साथ एक अधिक स्मार्ट इंजेक्शन लक्ष्य किया जा सकता है:
/*
* 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?)
समूह निर्माण में अधिक विस्तार जोड़ने के साथ regexp अपवादों को बदल सकते हैं (इस regexp को यहां समझें: https://regex101.com/r/sE6gT9/3 )।
और बिना jQuery संस्करण के लिए, नीचे दिए गए कोड की जाँच करें:
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';
}
}
}