-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathofflineform.jquery.min.js
6 lines (6 loc) · 2.41 KB
/
offlineform.jquery.min.js
1
2
3
4
5
6
/**
* offlineForm minified version
* @version 0.2
* @link https://github.com/Brewal/offlineForm
*/
(function(e){function r(){form=e(this);if(navigator.onLine){if(n.onlineAjaxSend){if(n.beforeOnlineAjaxSend){n.beforeOnlineAjaxSend()}e.ajax({type:form.attr("method"),url:form.attr("action"),data:form.serialize(),success:function(e){if(n.onlineAjaxCallback){n.onlineAjaxCallback(e)}}}).fail(function(e){if(n.onError)n.onError(e);return false});return false}return true}action=form.attr("action");if(action==="")action=document.location.href;if(localStorage[n.key]===undefined){localStorage[n.key]=JSON.stringify([])}data=JSON.parse(localStorage[n.key]);if(data.length){e.each(data,function(e,t){if(t===null){data.splice(e,1)}})}if(n.beforeStorage)n.beforeStorage(data.length,data);data.push({action:action,urlEncoded:form.serialize(),method:form.attr("method")});if(n.onStorage)n.onStorage(data.length,data);localStorage[n.key]=JSON.stringify(data);return false}var t={key:"offlineForm",classname:"offlineForm",onlineAjaxSend:false,autoSync:true,beforeSync:null,afterSync:null,onSync:null,beforeStorage:null,onStorage:null,onError:null,beforeOnlineAjaxSend:null,onlineAjaxCallback:null};var n=t;var i={init:function(t){return this.each(function(){n=e.extend(n,t);form=e(this);if(!form.hasClass(n.classname)){form.on("submit",r);form.addClass(n.classname)}})},sync:function(){if(localStorage[n.key]===undefined)return false;else data=JSON.parse(localStorage[n.key]);total=data.length;if(data!==undefined&&total>0){e.each(data,function(e,t){if(t===null){data.splice(e,1)}});total=data.length;if(n.beforeSync)n.beforeSync(total);var t=JSON.parse(JSON.stringify(data));e.each(data,function(r,i){if(i){e.ajax({type:i.method,url:i.action,data:i.urlEncoded,async:false,success:function(e){if(n.onSync)n.onSync(r+1,total,e);t.splice(0,1);localStorage[n.key]=JSON.stringify(t);if(data.length===0&&n.afterSync)n.afterSync(total)}}).fail(function(e){t.splice(0,1);localStorage[n.key]=JSON.stringify(t);if(n.onError)n.onError(e);return false})}});return true}return false}};if(n.autoSync){var s=function(){i["sync"]()};if(window.addEventListener){window.addEventListener("online",s)}else{document.body.attachEvent("ononline",s)}}e.fn.offlineForm=function(t){if(i[t]){return i[t].apply(this,Array.prototype.slice.call(arguments,1))}else if(typeof t==="object"||!t){return i.init.apply(this,arguments)}else{e.error("Method "+t+" does not exist on jQuery.offlineForm")}}})(jQuery);