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!', 
       ...