Pārlūkot izejas kodu

fix: javascript block not working in nested iframe (#1504)

Ahmad Kholid 1 gadu atpakaļ
vecāks
revīzija
6741c8af34

+ 2 - 1
src/content/blocksHandler/handlerJavascriptCode.js

@@ -1,4 +1,5 @@
 import { jsContentHandler } from '@/workflowEngine/utils/javascriptBlockUtil';
+import { getDocumentCtx } from '../handleSelector';
 
 function javascriptCode({ data, isPreloadScripts, frameSelector }) {
   if (!isPreloadScripts && Array.isArray(data))
@@ -8,7 +9,7 @@ function javascriptCode({ data, isPreloadScripts, frameSelector }) {
   let $documentCtx = document;
 
   if (frameSelector) {
-    const iframeCtx = document.querySelector(frameSelector)?.contentDocument;
+    const iframeCtx = getDocumentCtx(frameSelector);
     if (!iframeCtx) return Promise.resolve({ success: false });
 
     $documentCtx = iframeCtx;

+ 3 - 4
src/workflowEngine/utils/javascriptBlockUtil.js

@@ -1,3 +1,5 @@
+import { getDocumentCtx } from '@/content/handleSelector';
+
 export function automaFetchClient(id, { type, resource }) {
   return new Promise((resolve, reject) => {
     const validType = ['text', 'json', 'base64'];
@@ -71,10 +73,7 @@ export function jsContentHandler($blockData, $preloadScripts, $automaScript) {
       let $documentCtx = document;
 
       if ($blockData.frameSelector) {
-        const iframeCtx = document.querySelector(
-          $blockData.frameSelector
-        )?.contentDocument;
-
+        const iframeCtx = getDocumentCtx($blockData.frameSelector);
         if (!iframeCtx) {
           reject(new Error('iframe-not-found'));
           return;