Stupid little javascript workaround for when you are too lazy to do it in the html. Pretty fast, saves pain.
requires this little function:
function strripos(haystack, needle, offset) { // discuss at: http://phpjs.org/functions/strripos/ // original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net) // bugfixed by: Onno Marsman // bugfixed by: Brett Zamir (http://brett-zamir.me) // input by: saulius // example 1: strripos('Kevin van Zonneveld', 'E'); // returns 1: 16 haystack = (haystack + '') .toLowerCase(); needle = (needle + '') .toLowerCase(); var i = -1; if (offset) { i = (haystack + '') .slice(offset) .lastIndexOf(needle); // strrpos' offset indicates starting point of range till end, // while lastIndexOf's optional 2nd argument indicates ending point of range from the beginning if (i !== -1) { i += offset; } } else { i = (haystack + '') .lastIndexOf(needle); } return i >= 0 ? i : false; }
and the jQuery bit:
jQuery(document).ready(function($) { // add target="_blank" to all *external* //create array of all *internal* urls that should NOT go to a separate window var internal_urls = Array('domain.tld','127.0.0.1','domain.tld'); $('a').attr('target',function(){ var url = $(this).attr('href'); var target = $(this).attr('target'); if(url == '#' || strripos(url,'http',0)===false){ return '_self'; } else { var i=0; while (internal_urls[i]){ if(strripos(url, internal_urls[i], 0)){ return target; } i++; } return '_blank'; } }); });