JSFiddle - React, Tailwind, and code Playground
by _nderscore
HTML
<input type="submit" value="Do AJAX" />
<div id="testElement">
This is the test element which will be updated by ajax.
</div>
JavaScript
/* shim */
mmcore = window.mmcore || {};
/* /shim */
/* mmcore AJAX listeners
*
* Non-jQuery event listeners for XHR requests
* 2013.12.19 - Jim Herrero
*
* mmcore.addPreAjaxListener
* mmcore.addPostAjaxListener
*
* match = url, accepts string or regex
* func = function to execute
*/
;(function(){
if(mmcore._preAjaxListeners) return;
mmcore._preAjaxListeners = [];
mmcore._postAjaxListeners = [];
mmcore._fireAjaxEvents = function(flag, href){
if (!href) return;
var arr;
if (flag == 'pre') arr = mmcore._preAjaxListeners;
else if (flag == 'post') arr = mmcore._postAjaxListeners;
else return;
for(var i = 0, l = arr.length; i < l; i++){
var x = arr[i];
if(typeof x.match == 'string' && href == x.match)
x.handler();
else if (x.match.test && x.match.test(href))
x.handler();
}
};
mmcore.addPreAjaxListener = function(match, handler){
mmcore._preAjaxListeners.push({ match: match, handler: handler });
};
mmcore.addPostAjaxListener = function(match, handler){
mmcore._postAjaxListeners.push({ match: match, handler: handler });
};
XMLHttpRequest.prototype.open = (function(orig){
return function(a,b,c){
this._mmHref = b;
return orig.apply(this, arguments);
};
})(XMLHttpRequest.prototype.open);
XMLHttpRequest.prototype.send = (function(orig){
return function(){
mmcore._fireAjaxEvents('pre', this._mmHref);
if (!/MSIE/.test(navigator.userAgent)){
this.addEventListener("loadend", function(){
mmcore._fireAjaxEvents('post', this._mmHref);
}, false);
} else {
var xhr = this,
waiter = setInterval(function(){
if(xhr.readyState && xhr.readyState == 4){
...