xhr.event.js

xhr event monitor

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/404457/829696/xhreventjs.js

  1. ;
  2. (function() {
  3. if (typeof window.CustomEvent === "function") return false;
  4.  
  5. function CustomEvent(event, params) {
  6. params = params || { bubbles: false, cancelable: false, detail: undefined };
  7. var evt = document.createEvent('CustomEvent');
  8. evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);
  9. return evt;
  10. }
  11.  
  12. CustomEvent.prototype = window.Event.prototype;
  13.  
  14. window.CustomEvent = CustomEvent;
  15. })();
  16. ;
  17. (function() {
  18. function ajaxEventTrigger(event) {
  19. var ajaxEvent = new CustomEvent(event, { detail: this });
  20. window.dispatchEvent(ajaxEvent);
  21. }
  22.  
  23. var oldXHR = window.XMLHttpRequest;
  24.  
  25. function newXHR() {
  26. var realXHR = new oldXHR();
  27. realXHR.addEventListener('abort', function() { ajaxEventTrigger.call(this, 'ajaxAbort'); }, false);
  28. realXHR.addEventListener('error', function() { ajaxEventTrigger.call(this, 'ajaxError'); }, false);
  29. realXHR.addEventListener('load', function() { ajaxEventTrigger.call(this, 'ajaxLoad'); }, false);
  30. realXHR.addEventListener('loadstart', function() { ajaxEventTrigger.call(this, 'ajaxLoadStart'); }, false);
  31. realXHR.addEventListener('progress', function() { ajaxEventTrigger.call(this, 'ajaxProgress'); }, false);
  32. realXHR.addEventListener('timeout', function() { ajaxEventTrigger.call(this, 'ajaxTimeout'); }, false);
  33. realXHR.addEventListener('loadend', function() { ajaxEventTrigger.call(this, 'ajaxLoadEnd'); }, false);
  34. realXHR.addEventListener('readystatechange', function() { ajaxEventTrigger.call(this, 'ajaxReadyStateChange'); }, false);
  35.  
  36. return realXHR;
  37. }
  38.  
  39. window.XMLHttpRequest = newXHR;
  40. })();
  41.  
  42.  
  43. function funDownload(content, filename) {
  44. var eleLink = document.createElement('a');
  45. eleLink.download = filename;
  46. eleLink.style.display = 'none';
  47. var blob = new Blob([content]);
  48. eleLink.href = URL.createObjectURL(blob);
  49. document.body.appendChild(eleLink);
  50. eleLink.click();
  51. document.body.removeChild(eleLink);
  52. };

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址