91 lines
2.6 KiB
JavaScript
91 lines
2.6 KiB
JavaScript
|
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]);
|
||
|
})();
|