feat: add redirection from MSR homepage to extension page
This commit is contained in:
parent
a769bbf57e
commit
ebd78dcae4
|
@ -8,7 +8,9 @@
|
||||||
"build": "vue-tsc -b && vite build && cp -r public/* dist/",
|
"build": "vue-tsc -b && vite build && cp -r public/* dist/",
|
||||||
"build:watch": "vite build --watch",
|
"build:watch": "vite build --watch",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
"lint": "biome format --write ."
|
"lint": "biome format --write .",
|
||||||
|
"quality-check": "biome ci",
|
||||||
|
"qc": "npm run quality-check"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@tailwindcss/vite": "^4.1.7",
|
"@tailwindcss/vite": "^4.1.7",
|
||||||
|
|
13
public/background.js
Normal file
13
public/background.js
Normal file
|
@ -0,0 +1,13 @@
|
||||||
|
console.log("background.js loaded 55555")
|
||||||
|
|
||||||
|
chrome.webRequest.onBeforeRequest.addListener(
|
||||||
|
function(details) {
|
||||||
|
console.log("onBeforeRequest MAIN_FRAME:", details.url, details.type, details.frameId, details.tabId)
|
||||||
|
if (details.url === "https://monster-siren.hypergryph.com/manifest.json" && details.type === "other" && details.frameId === 0) {
|
||||||
|
console.log("onBeforeRequest - REDIRECTING MAIN_FRAME")
|
||||||
|
chrome.tabs.create({ url: chrome.runtime.getURL("index.html") })
|
||||||
|
chrome.tabs.remove(details.tabId)
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ urls: ["https://monster-siren.hypergryph.com/manifest.json"] }
|
||||||
|
)
|
|
@ -1,3 +0,0 @@
|
||||||
// redirect to extension's index.html
|
|
||||||
const extensonUrl = chrome.extension.getURL('index.html')
|
|
||||||
const url = window.location.href
|
|
|
@ -10,10 +10,14 @@
|
||||||
"run_at": "document_end"
|
"run_at": "document_end"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"permissions": ["webRequest", "webRequestBlocking"],
|
"host_permissions": ["https://monster-siren.hypergryph.com/*"],
|
||||||
"icons": {
|
"icons": {
|
||||||
"16": "vite.svg",
|
"16": "vite.svg",
|
||||||
"48": "vite.svg",
|
"48": "vite.svg",
|
||||||
"128": "vite.svg"
|
"128": "vite.svg"
|
||||||
}
|
},
|
||||||
|
"background": {
|
||||||
|
"service_worker": "background.js"
|
||||||
|
},
|
||||||
|
"permissions": ["tabs", "webRequest"]
|
||||||
}
|
}
|
|
@ -1,41 +0,0 @@
|
||||||
<script setup lang="ts">
|
|
||||||
import { ref } from 'vue'
|
|
||||||
|
|
||||||
defineProps<{ msg: string }>()
|
|
||||||
|
|
||||||
const count = ref(0)
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<template>
|
|
||||||
<h1>{{ msg }}</h1>
|
|
||||||
|
|
||||||
<div class="card">
|
|
||||||
<button type="button" @click="count++">count is {{ count }}</button>
|
|
||||||
<p>
|
|
||||||
Edit
|
|
||||||
<code>components/HelloWorld.vue</code> to test HMR
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<p>
|
|
||||||
Check out
|
|
||||||
<a href="https://vuejs.org/guide/quick-start.html#local" target="_blank"
|
|
||||||
>create-vue</a
|
|
||||||
>, the official Vue + Vite starter
|
|
||||||
</p>
|
|
||||||
<p>
|
|
||||||
Learn more about IDE Support for Vue in the
|
|
||||||
<a
|
|
||||||
href="https://vuejs.org/guide/scaling-up/tooling.html#ide-support"
|
|
||||||
target="_blank"
|
|
||||||
>Vue Docs Scaling up Guide</a
|
|
||||||
>.
|
|
||||||
</p>
|
|
||||||
<p class="read-the-docs">Click on the Vite and Vue logos to learn more</p>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.read-the-docs {
|
|
||||||
color: #888;
|
|
||||||
}
|
|
||||||
</style>
|
|
30
src/main.ts
30
src/main.ts
|
@ -1,5 +1,29 @@
|
||||||
import { createApp } from 'vue'
|
import { createApp } from 'vue';
|
||||||
import './style.css'
|
import './style.css';
|
||||||
import App from './App.vue'
|
import App from './App.vue';
|
||||||
|
|
||||||
|
// unregister the service worker
|
||||||
|
if ('serviceWorker' in navigator) {
|
||||||
|
navigator.serviceWorker.getRegistrations().then(function(registrations) {
|
||||||
|
for(let registration of registrations) {
|
||||||
|
// 可以根据 scope 判断是否是目标网站的 Service Worker
|
||||||
|
console.log('Unregistering service worker:', registration.scope)
|
||||||
|
registration.unregister()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Replace the body content with the Vue app
|
||||||
|
document.getElementsByTagName('html')[0].innerHTML = `
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>MSR Mod</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
</body>
|
||||||
|
`;
|
||||||
|
|
||||||
createApp(App).mount('#app')
|
createApp(App).mount('#app')
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
import { defineConfig } from 'vite'
|
|
||||||
import vue from '@vitejs/plugin-vue'
|
import vue from '@vitejs/plugin-vue'
|
||||||
|
import { defineConfig } from 'vite'
|
||||||
|
|
||||||
// https://vite.dev/config/
|
// https://vite.dev/config/
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
|
@ -14,9 +14,9 @@ export default defineConfig({
|
||||||
// // options: resolve(__dirname, 'options.html'), // If you have an options page
|
// // options: resolve(__dirname, 'options.html'), // If you have an options page
|
||||||
// },
|
// },
|
||||||
output: {
|
output: {
|
||||||
entryFileNames: `assets/[name].js`,
|
entryFileNames: 'assets/[name].js',
|
||||||
chunkFileNames: `assets/[name].js`,
|
chunkFileNames: 'assets/[name].js',
|
||||||
assetFileNames: `assets/[name].[ext]`,
|
assetFileNames: 'assets/[name].[ext]',
|
||||||
// Optional: to disable hashing for specific assets if needed
|
// Optional: to disable hashing for specific assets if needed
|
||||||
// entryFileNames: `assets/[name].js`,
|
// entryFileNames: `assets/[name].js`,
|
||||||
// chunkFileNames: `assets/[name].js`,
|
// chunkFileNames: `assets/[name].js`,
|
||||||
|
|
Loading…
Reference in New Issue
Block a user