fix firefox bug

This commit is contained in:
Gabe Yuan
2023-08-31 20:57:51 +08:00
parent 4486ad353c
commit 2e6e52004f
3 changed files with 20 additions and 12 deletions

View File

@@ -89,7 +89,7 @@ const userscriptWebpack = (config, env) => {
// @grant GM.getValue // @grant GM.getValue
// @grant GM.deleteValue // @grant GM.deleteValue
// @grant GM.info // @grant GM.info
// @inject-into content // @grant unsafeWindow
// @connect translate.googleapis.com // @connect translate.googleapis.com
// @connect api-edge.cognitive.microsofttranslator.com // @connect api-edge.cognitive.microsofttranslator.com
// @connect edge.microsoft.com // @connect edge.microsoft.com

View File

@@ -25,8 +25,9 @@
"build:firefox": "rm -rf build/firefox && cp -r build/chrome build/firefox && cat ./build/firefox/manifest.firefox.json > ./build/firefox/manifest.json", "build:firefox": "rm -rf build/firefox && cp -r build/chrome build/firefox && cat ./build/firefox/manifest.firefox.json > ./build/firefox/manifest.json",
"build:web": "rm -rf build/web && BUILD_PATH=./build/web REACT_APP_CLIENT=userscript react-app-rewired build", "build:web": "rm -rf build/web && BUILD_PATH=./build/web REACT_APP_CLIENT=userscript react-app-rewired build",
"build:userscript": "rm -rf build/userscript && mkdir build/userscript && cp build/web/kiss-translator.user.js build/userscript/kiss-translator.user.js", "build:userscript": "rm -rf build/userscript && mkdir build/userscript && cp build/web/kiss-translator.user.js build/userscript/kiss-translator.user.js",
"build:userscript-ios": "file1=build/userscript/kiss-translator.user.js file2=build/userscript/kiss-translator-ios-safari.user.js && cp $file1 $file2 && sed -i 's|// @grant unsafeWindow|// @inject-into content|g' $file2",
"build:rules": "babel-node src/rules.js", "build:rules": "babel-node src/rules.js",
"build": "yarn build:chrome && yarn build:edge && yarn build:firefox && yarn build:web && yarn build:userscript && yarn build:rules", "build": "yarn build:chrome && yarn build:edge && yarn build:firefox && yarn build:web && yarn build:userscript && yarn build:userscript-ios && yarn build:rules",
"deploy:web": "wrangler pages deploy ./build/web --project-name kiss-translator", "deploy:web": "wrangler pages deploy ./build/web --project-name kiss-translator",
"test": "react-app-rewired test", "test": "react-app-rewired test",
"eject": "react-scripts eject" "eject": "react-scripts eject"
@@ -37,7 +38,8 @@
"react-app/jest" "react-app/jest"
], ],
"globals": { "globals": {
"GM": true "GM": true,
"unsafeWindow": true
} }
}, },
"browserslist": { "browserslist": {

View File

@@ -3,7 +3,11 @@ import ReactDOM from "react-dom/client";
import Action from "./views/Action"; import Action from "./views/Action";
import createCache from "@emotion/cache"; import createCache from "@emotion/cache";
import { CacheProvider } from "@emotion/react"; import { CacheProvider } from "@emotion/react";
import { getSettingWithDefault, getRulesWithDefault, getFabWithDefault } from "./libs/storage"; import {
getSettingWithDefault,
getRulesWithDefault,
getFabWithDefault,
} from "./libs/storage";
import { Translator } from "./libs/translator"; import { Translator } from "./libs/translator";
import { trySyncAllSubRules } from "./libs/subRules"; import { trySyncAllSubRules } from "./libs/subRules";
import { isGm } from "./libs/client"; import { isGm } from "./libs/client";
@@ -22,16 +26,18 @@ const init = async () => {
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE) || document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE) ||
document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE2) document.location.href.includes(process.env.REACT_APP_OPTIONSPAGE2)
) { ) {
// unsafeWindow.GM = GM; if (GM?.info?.script?.grant?.includes("unsafeWindow")) {
// unsafeWindow.APP_NAME = process.env.REACT_APP_NAME; unsafeWindow.GM = GM;
const ping = btoa(Math.random()).slice(3, 11); unsafeWindow.APP_NAME = process.env.REACT_APP_NAME;
window.addEventListener(ping, handlePing); } else {
// window.eval(`(${injectScript})("${ping}")`); // eslint-disable-line const ping = btoa(Math.random()).slice(3, 11);
const script = document.createElement("script"); window.addEventListener(ping, handlePing);
script.textContent = `(${injectScript})("${ping}")`; // window.eval(`(${injectScript})("${ping}")`); // eslint-disable-line
if (document.head) { const script = document.createElement("script");
script.textContent = `(${injectScript})("${ping}")`;
document.head.append(script); document.head.append(script);
} }
return; return;
} }