Browse Source

fix: context menu trigger not working inside iframe

Ahmad Kholid 2 years ago
parent
commit
c8f421ed2c
2 changed files with 15 additions and 11 deletions
  1. 8 4
      src/background/BackgroundWorkflowTriggers.js
  2. 7 7
      src/content/index.js

+ 8 - 4
src/background/BackgroundWorkflowTriggers.js

@@ -114,10 +114,14 @@ class BackgroundWorkflowTriggers {
   static async contextMenu({ parentMenuItemId, menuItemId, frameId }, tab) {
     try {
       if (parentMenuItemId !== 'automaContextMenu') return;
-      const message = await browser.tabs.sendMessage(tab.id, {
-        frameId,
-        type: 'context-element',
-      });
+      const message = await browser.tabs.sendMessage(
+        tab.id,
+        {
+          type: 'context-element',
+        },
+        { frameId }
+      );
+
       let workflowId = menuItemId;
       if (menuItemId.startsWith('trigger')) {
         const { 1: triggerWorkflowId } = menuItemId.split(':');

+ 7 - 7
src/content/index.js

@@ -136,18 +136,18 @@ function messageListener({ data, source }) {
 
   initCommandPalette();
 
-  window.isAutomaInjected = true;
-  window.addEventListener('message', messageListener);
-
   let contextElement = null;
   let $ctxTextSelection = '';
 
+  window.isAutomaInjected = true;
+  window.addEventListener('message', messageListener);
+  window.addEventListener('contextmenu', ({ target }) => {
+    contextElement = target;
+    $ctxTextSelection = window.getSelection().toString();
+  });
+
   if (isMainFrame) {
     shortcutListener();
-    window.addEventListener('contextmenu', ({ target }) => {
-      contextElement = target;
-      $ctxTextSelection = window.getSelection().toString();
-    });
     // window.addEventListener('load', elementObserver);
   }