JSFiddle - React, Tailwind, and code Playground
by JakobJingleheimer
CSS
#log {
padding: 1em;
}
#log li {
padding: 0.5em 0;
}
#log li + li {
border-top: 1px solid #ddd;
}
#log span {
font-family: monospace;
}
JavaScript
var Log = document.getElementById('log'),
domain = ('www.dragonage.com').split('.').splice(-2,2).join('.'),
absUriRegex = /^(?:[a-z]+:)?\/\//i;
function updateLog(input) {
Log.innerHTML += '<li>' + input + '</li>';
}
function send(href) {
if ( ~href.indexOf('#!') && ( !absUriRegex.test(href) || ~href.indexOf(domain) ) ) {
return true;
}
return false;
}
updateLog( 'send = <span>' + send('//bioware.com') + '</span> for //bioware.com');
updateLog( 'send = <span>' + send('//www.bioware.com') + '</span> for //www.bioware.com');
updateLog( 'send = <span>' + send('http://www.bioware.com') + '</span> for http://www.bioware.com');
updateLog( 'send = <span>' + send('https://www.bioware.com') + '</span> for https://www.bioware.com');
updateLog( 'send = <span>' + send('www.dragonage.com') + '</span> for www.dragonage.com');
updateLog( 'send = <span>' + send('//www.dragonage.com') + '</span> for //www.dragonage.com');
updateLog( 'send = <span>' + send('//assets.dragonage.com') + '</span> for //assets.dragonage.com');
updateLog( 'send = <span>' + send('#!/home') + '</span> for #!/home');
updateLog( 'send = <span>' + send('//www.dragonage.com/#!/home') + '</span> for //www.dragonage.com/#!/home');
updateLog( 'send = <span>' + send('http://www.dragonage.com/#!/home') + '</span> for http://www.dragonage.com/#!/home');
updateLog( 'send = <span>' + send('https://www.dragonage.com/#!/home') + '</span> for https://www.dragonage.com/#!/home');