ip.flash.moe/public/script.js

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]);
})();