JSFiddle - React, Tailwind, and code Playground
by GRMule
HTML
<button onclick="return doIt();">do request</button>
<button onclick="return invalidateAjax();">invalidate ajax</button>
<button onclick="return restoreAjax();">restore ajax</button>
<h5>log</h5>
<div id="log"></div>
JavaScript
// utility function to get request cross-browser
function getRequest(url, success, error) {
var req = false;
try{
// most browsers
req = new XMLHttpRequest();
} catch (e){
// IE
try{
req = new ActiveXObject("Msxml2.XMLHTTP");
} catch(e) {
// try an older version
try{
req = new ActiveXObject("Microsoft.XMLHTTP");
} catch(e) {
return false;
}
}
}
if (!req) return false;
if (typeof success != 'function') success = function () {};
if (typeof error!= 'function') error = function () {};
req.onreadystatechange = function(){
if(req.readyState == 4) {
return req.status === 200 ?
success(req.responseText) : error(req.status);
}
}
req.open("GET", url, true);
req.send(null);
return req;
};
// replace the ajax object with FALSE, make a function to restore it
var resetter = false;
var invalidateAjax = function () {
if (resetter != false) {
log('already blocked');
return false;
}
if (typeof ActiveXObject !== 'undefined') {
var originalObject = ActiveXObject;
ActiveXObject = false;
} else {
var originalObject = XMLHttpRequest;
XMLHttpRequest = false;
}
resetter = function () {
if (typeof ActiveXObject !== 'undefined') {
ActiveXObject = originalObject;
} else {
XMLHttpRequest = originalObject;
}
originalObject = null;
resetter = false;
};
log('ajax blocked');
};
// call the restore function, if it exists
var restoreAjax = function () {
if (resetter === false) {
log('cannot restore, not blocked');
return false;
}
resetter();
log('restored ajax capability');
};
// make a dummy ajax request
var doIt = function () {
getRequest(
'/echo/html/?html=hello word!',
...