snipt

Ctrl+h for KB shortcuts

JavaScript

Open all external links in a new window

$('a').each(function() {
	// The link's href
	var theHref = $(this).attr('href').toLowerCase();
	// The current domain
	var currentDomain = window.location.host;
    // Kill any subdomains
    var noSubDomain = currentDomain.match(/[^\.]*\.[^.]*$/)[0];
    // Create a new (case insensitive) regex from the clean domain
	var theDomain = new RegExp(noSubDomain, 'gi');

	if(/^https?/gi.test(theHref)) {
		// This link is using HTTP/HTTPs and is probably external
		if(theDomain.test(theHref)) {
			// Do nothing. For some reason, this site is using absolute internal links         
        } else {
			$(this).attr('target', '_blank');
		}
	}
});
https://snipt.net/embed/2766b50c48170d7fd565035b14fc4785/
/raw/2766b50c48170d7fd565035b14fc4785/
2766b50c48170d7fd565035b14fc4785
js
JavaScript
19
2019-05-27T07:28:02
True
False
False
Apr 04, 2014 at 06:15 PM
/api/public/snipt/127504/
open-all-external-links-in-a-new-window
<table class="highlighttable"><tr><td class="linenos"><div class="linenodiv"><pre><a href="#L-1"> 1</a> <a href="#L-2"> 2</a> <a href="#L-3"> 3</a> <a href="#L-4"> 4</a> <a href="#L-5"> 5</a> <a href="#L-6"> 6</a> <a href="#L-7"> 7</a> <a href="#L-8"> 8</a> <a href="#L-9"> 9</a> <a href="#L-10">10</a> <a href="#L-11">11</a> <a href="#L-12">12</a> <a href="#L-13">13</a> <a href="#L-14">14</a> <a href="#L-15">15</a> <a href="#L-16">16</a> <a href="#L-17">17</a> <a href="#L-18">18</a> <a href="#L-19">19</a></pre></div></td><td class="code"><div class="highlight"><pre><span></span><span id="L-1"><a name="L-1"></a><span class="nx">$</span><span class="p">(</span><span class="s1">&#39;a&#39;</span><span class="p">).</span><span class="nx">each</span><span class="p">(</span><span class="kd">function</span><span class="p">()</span> <span class="p">{</span> </span><span id="L-2"><a name="L-2"></a> <span class="c1">// The link&#39;s href</span> </span><span id="L-3"><a name="L-3"></a> <span class="kd">var</span> <span class="nx">theHref</span> <span class="o">=</span> <span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;href&#39;</span><span class="p">).</span><span class="nx">toLowerCase</span><span class="p">();</span> </span><span id="L-4"><a name="L-4"></a> <span class="c1">// The current domain</span> </span><span id="L-5"><a name="L-5"></a> <span class="kd">var</span> <span class="nx">currentDomain</span> <span class="o">=</span> <span class="nb">window</span><span class="p">.</span><span class="nx">location</span><span class="p">.</span><span class="nx">host</span><span class="p">;</span> </span><span id="L-6"><a name="L-6"></a> <span class="c1">// Kill any subdomains</span> </span><span id="L-7"><a name="L-7"></a> <span class="kd">var</span> <span class="nx">noSubDomain</span> <span class="o">=</span> <span class="nx">currentDomain</span><span class="p">.</span><span class="nx">match</span><span class="p">(</span><span class="sr">/[^\.]*\.[^.]*$/</span><span class="p">)[</span><span class="mi">0</span><span class="p">];</span> </span><span id="L-8"><a name="L-8"></a> <span class="c1">// Create a new (case insensitive) regex from the clean domain</span> </span><span id="L-9"><a name="L-9"></a> <span class="kd">var</span> <span class="nx">theDomain</span> <span class="o">=</span> <span class="k">new</span> <span class="nb">RegExp</span><span class="p">(</span><span class="nx">noSubDomain</span><span class="p">,</span> <span class="s1">&#39;gi&#39;</span><span class="p">);</span> </span><span id="L-10"><a name="L-10"></a> </span><span id="L-11"><a name="L-11"></a> <span class="k">if</span><span class="p">(</span><span class="sr">/^https?/gi</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">theHref</span><span class="p">))</span> <span class="p">{</span> </span><span id="L-12"><a name="L-12"></a> <span class="c1">// This link is using HTTP/HTTPs and is probably external</span> </span><span id="L-13"><a name="L-13"></a> <span class="k">if</span><span class="p">(</span><span class="nx">theDomain</span><span class="p">.</span><span class="nx">test</span><span class="p">(</span><span class="nx">theHref</span><span class="p">))</span> <span class="p">{</span> </span><span id="L-14"><a name="L-14"></a> <span class="c1">// Do nothing. For some reason, this site is using absolute internal links </span> </span><span id="L-15"><a name="L-15"></a> <span class="p">}</span> <span class="k">else</span> <span class="p">{</span> </span><span id="L-16"><a name="L-16"></a> <span class="nx">$</span><span class="p">(</span><span class="k">this</span><span class="p">).</span><span class="nx">attr</span><span class="p">(</span><span class="s1">&#39;target&#39;</span><span class="p">,</span> <span class="s1">&#39;_blank&#39;</span><span class="p">);</span> </span><span id="L-17"><a name="L-17"></a> <span class="p">}</span> </span><span id="L-18"><a name="L-18"></a> <span class="p">}</span> </span><span id="L-19"><a name="L-19"></a><span class="p">});</span> </span></pre></div> </td></tr></table>
javascript, jquery