fix: remove postMessage from iframe

This commit is contained in:
Gabe Yuan
2024-02-22 17:26:22 +08:00
parent 2b5c1952c0
commit 8c7d6bb552

View File

@@ -14,7 +14,7 @@ import {
} from "./config"; } from "./config";
import { getFabWithDefault, getSettingWithDefault } from "./libs/storage"; import { getFabWithDefault, getSettingWithDefault } from "./libs/storage";
import { Translator } from "./libs/translator"; import { Translator } from "./libs/translator";
import { isIframe, sendIframeMsg, sendParentMsg } from "./libs/iframe"; import { isIframe, sendIframeMsg } from "./libs/iframe";
import Slection from "./views/Selection"; import Slection from "./views/Selection";
import { touchTapListener } from "./libs/touch"; import { touchTapListener } from "./libs/touch";
import { debounce, genEventName } from "./libs/utils"; import { debounce, genEventName } from "./libs/utils";
@@ -79,10 +79,9 @@ function runtimeListener(translator) {
/** /**
* iframe 页面执行 * iframe 页面执行
* @param {*} setting * @param {*} translator
*/ */
function runIframe(setting) { function runIframe(translator) {
let translator;
window.addEventListener("message", (e) => { window.addEventListener("message", (e) => {
const { action, args } = e.data || {}; const { action, args } = e.data || {};
switch (action) { switch (action) {
@@ -93,16 +92,11 @@ function runIframe(setting) {
translator?.toggleStyle(); translator?.toggleStyle();
break; break;
case MSG_TRANS_PUTRULE: case MSG_TRANS_PUTRULE:
if (!translator) {
translator = new Translator(args, setting);
} else {
translator.updateRule(args || {}); translator.updateRule(args || {});
}
break; break;
default: default:
} }
}); });
sendParentMsg(MSG_TRANS_GETRULE);
} }
/** /**
@@ -174,22 +168,6 @@ function showTransbox({
); );
} }
/**
* 监听来自iframe页面消息
* @param {*} rule
*/
function windowListener(rule) {
window.addEventListener("message", (e) => {
const { action } = e.data || {};
switch (action) {
case MSG_TRANS_GETRULE:
sendIframeMsg(MSG_TRANS_PUTRULE, rule);
break;
default:
}
});
}
/** /**
* 显示错误信息到页面顶部 * 显示错误信息到页面顶部
* @param {*} message * @param {*} message
@@ -245,12 +223,6 @@ export async function run(isUserscript = false) {
return; return;
} }
// 适配iframe
if (isIframe) {
runIframe(setting);
return;
}
// 不规范网页修复 // 不规范网页修复
const fixerSetting = await matchFixer(href, setting); const fixerSetting = await matchFixer(href, setting);
@@ -258,8 +230,13 @@ export async function run(isUserscript = false) {
const rule = await matchRule(href, setting); const rule = await matchRule(href, setting);
const translator = new Translator(rule, setting, fixerSetting); const translator = new Translator(rule, setting, fixerSetting);
// 适配iframe
if (isIframe) {
runIframe(translator);
return;
}
// 监听消息 // 监听消息
windowListener(rule);
!isUserscript && runtimeListener(translator); !isUserscript && runtimeListener(translator);
// 输入框翻译 // 输入框翻译