diff --git a/web/app.js b/web/app.js index 95fe841a0e4b4..fafb1d368a095 100644 --- a/web/app.js +++ b/web/app.js @@ -1345,10 +1345,14 @@ const PDFViewerApplication = { * @private */ async _initializeJavaScript(pdfDocument) { - if (!AppOptions.get("enableScripting")) { + const objects = await pdfDocument.getFieldObjects(); + + if (pdfDocument !== this.pdfDocument) { + return; // The document was closed while the JavaScript data resolved. + } + if (!objects || !AppOptions.get("enableScripting")) { return; } - const objects = await pdfDocument.getFieldObjects(); const scripting = this.externalServices.scripting; window.addEventListener("updateFromSandbox", function (event) { diff --git a/web/firefoxcom.js b/web/firefoxcom.js index 7c3fd5ae7b0d3..352987e22362c 100644 --- a/web/firefoxcom.js +++ b/web/firefoxcom.js @@ -254,17 +254,19 @@ class FirefoxComDataRangeTransport extends PDFDataRangeTransport { } } -const FirefoxScripting = { - createSandbox(data) { +class FirefoxScripting { + static createSandbox(data) { FirefoxCom.requestSync("createSandbox", data); - }, - dispatchEventInSandbox(event, sandboxID) { + } + + static dispatchEventInSandbox(event, sandboxID) { FirefoxCom.requestSync("dispatchEventInSandbox", event); - }, - destroySandbox() { + } + + static destroySandbox() { FirefoxCom.requestSync("destroySandbox", null); - }, -}; + } +} class FirefoxExternalServices extends DefaultExternalServices { static updateFindControlState(data) { diff --git a/web/ui_utils.js b/web/ui_utils.js index 19ea882354459..1509d90732586 100644 --- a/web/ui_utils.js +++ b/web/ui_utils.js @@ -1010,8 +1010,8 @@ function getActiveOrFocusedElement() { /** * Generate a random string which is not define somewhere in actions. * - * @param {WaitOnEventOrTimeoutParameters} - * @returns {Promise} A promise that is resolved with a {WaitOnType} value. + * @param {Object} objects - The value returned by `getFieldObjects` in the API. + * @returns {string} A unique string. */ function generateRandomStringForSandbox(objects) { const allObjects = Object.values(objects).flat(2);