AllowJavascriptChild.sys.mjs (1018B)
1 export class AllowJavascriptChild extends JSWindowActorChild { 2 async receiveMessage(msg) { 3 switch (msg.name) { 4 case "CheckScriptsAllowed": 5 return this.checkScriptsAllowed(); 6 case "CheckFiredLoadEvent": 7 return this.contentWindow.wrappedJSObject.gFiredOnload; 8 case "CreateIframe": 9 return this.createIframe(msg.data.url); 10 } 11 return null; 12 } 13 14 handleEvent(event) { 15 if (event.type === "load") { 16 this.sendAsyncMessage("LoadFired"); 17 } 18 } 19 20 checkScriptsAllowed() { 21 let win = this.contentWindow; 22 23 win.wrappedJSObject.gFiredOnclick = false; 24 win.document.body.click(); 25 return win.wrappedJSObject.gFiredOnclick; 26 } 27 28 async createIframe(url) { 29 let doc = this.contentWindow.document; 30 31 let iframe = doc.createElement("iframe"); 32 iframe.src = url; 33 doc.body.appendChild(iframe); 34 35 await new Promise(resolve => { 36 iframe.addEventListener("load", resolve, { once: true }); 37 }); 38 39 return iframe.browsingContext; 40 } 41 }