var createXHR = function() { if('all' in document && !('atob' in window) && 'XDomainRequest' in window) return new XDomainRequest; if('XMLHttpRequest' in window) return new XMLHttpRequest; if('ActiveXObject' in window) try { return new ActiveXObject('Msxml2.XMLHTTP'); } catch(e) { try { return new ActiveXObject('Microsoft.XMLHTTP'); } catch(e) {} } return null; } var getRemoteString = function(url, callback) { var xhr = createXHR(); xhr.onload = function(ev) { callback({ success: true, info: ev, text: xhr.responseText }); }; xhr.onerror = function(ev) { callback({ success: false, info: ev }); }; xhr.open('GET', url); xhr.send(); }; var selectTextInElement = function(target) { // MSIE if(document.body.createTextRange) { var range = document.body.createTextRange(); range.moveToElementText(target); range.select(); return; } // Mozilla if(window.getSelection) { var select = window.getSelection(), range = document.createRange(); range.selectNodeContents(target); select.removeAllRanges(); select.addRange(range); return; } }; var copySelectedText = function() { if(document.execCommand) { document.execCommand('copy'); return; } }; (function() { var fields = [ { target: 'ipv4', ext: 'v4', clickTarget: 'ipv4-click' }, { target: 'ipv6', ext: 'v6', clickTarget: 'ipv6-click' }, ]; for(var i in fields) (function(field) { var host = location.host.split('.'); host[0] += field.ext; var url = location.protocol + '//' + host.join('.') + '/'; getRemoteString(url, function(info) { var target = document.getElementById(field.target), prop = 'textContent' in target ? 'textContent' : 'innerText'; if(info.success) { target[prop] = info.text; if(field.clickTarget) { var clickTarget = document.getElementById(field.clickTarget); if(clickTarget) clickTarget.onclick = function() { selectTextInElement(target); copySelectedText(); }; } } else target[prop] = 'not available'; }); })(fields[i]); })();