版博士V2.0程序
Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

1 год назад
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. "use strict";
  2. var __importDefault = (this && this.__importDefault) || function (mod) {
  3. return (mod && mod.__esModule) ? mod : { "default": mod };
  4. };
  5. Object.defineProperty(exports, "__esModule", { value: true });
  6. const Event_1 = __importDefault(require("../../event/Event"));
  7. const ErrorEvent_1 = __importDefault(require("../../event/events/ErrorEvent"));
  8. const ResourceFetchHandler_1 = __importDefault(require("../../fetch/ResourceFetchHandler"));
  9. /**
  10. * Helper class for getting the URL relative to a Location object.
  11. */
  12. class ScriptUtility {
  13. /**
  14. * Returns a URL relative to the given Location object.
  15. *
  16. * @param options Options.
  17. * @param options.element Element.
  18. * @param element
  19. */
  20. static async loadExternalScript(element) {
  21. const src = element.getAttributeNS(null, 'src');
  22. const async = element.getAttributeNS(null, 'async') !== null;
  23. if (element.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptFileLoading ||
  24. element.ownerDocument.defaultView.happyDOM.settings.disableJavaScriptEvaluation) {
  25. return;
  26. }
  27. if (async) {
  28. let code = null;
  29. element.ownerDocument._readyStateManager.startTask();
  30. try {
  31. code = await ResourceFetchHandler_1.default.fetch(element.ownerDocument, src);
  32. }
  33. catch (error) {
  34. element.dispatchEvent(new ErrorEvent_1.default('error', {
  35. message: error.message,
  36. error
  37. }));
  38. element.ownerDocument.defaultView.dispatchEvent(new ErrorEvent_1.default('error', {
  39. message: error.message,
  40. error
  41. }));
  42. if (!element['_listeners']['error'] &&
  43. !element.ownerDocument.defaultView['_listeners']['error']) {
  44. element.ownerDocument.defaultView.console.error(error);
  45. }
  46. }
  47. if (code) {
  48. element.ownerDocument.defaultView.eval(code);
  49. element.dispatchEvent(new Event_1.default('load'));
  50. }
  51. element.ownerDocument._readyStateManager.endTask();
  52. }
  53. else {
  54. let code = null;
  55. try {
  56. code = ResourceFetchHandler_1.default.fetchSync(element.ownerDocument, src);
  57. }
  58. catch (error) {
  59. element.dispatchEvent(new ErrorEvent_1.default('error', {
  60. message: error.message,
  61. error
  62. }));
  63. element.ownerDocument.defaultView.dispatchEvent(new ErrorEvent_1.default('error', {
  64. message: error.message,
  65. error
  66. }));
  67. if (!element['_listeners']['error'] &&
  68. !element.ownerDocument.defaultView['_listeners']['error']) {
  69. element.ownerDocument.defaultView.console.error(error);
  70. }
  71. }
  72. if (code) {
  73. element.ownerDocument.defaultView.eval(code);
  74. element.dispatchEvent(new Event_1.default('load'));
  75. }
  76. }
  77. }
  78. }
  79. exports.default = ScriptUtility;
  80. //# sourceMappingURL=ScriptUtility.js.map