Files
pdfjs_with_vimiumc/inject-vimc.js
2025-10-03 23:32:36 +08:00

46 lines
1.4 KiB
JavaScript

"use strict";
(async () => {
const browser_ = globalThis.browser && browser.runtime ? browser : chrome
const loadJS = (host) => {
const injector = location.protocol + `//${host}/lib/injector.js`;
const script = document.createElement('script');
script.src = injector;
return document.head.appendChild(script);
};
const queryVimiumC = () => {
return browser_.runtime.sendMessage('vimium-c@gdh1995.cn', { handler: 99 })
};
const knownHost = localStorage.vimiumCHost;
if (knownHost) {
const element = loadJS(knownHost)
try {
await new Promise((resolve, reject) => {
element.onload = () => { resolve(); element.remove() }
element.onerror = () => { reject(); element.remove() }
})
return
} catch { }
// maybe UUID changed
}
queryVimiumC().catch((err) => {
if ((err + "").includes("Receiving end does not exist")) {
return new Promise(resolve => {
setTimeout(() => {
resolve(queryVimiumC().catch((err2) => {
console.log("can not load vimium c: 2nd:", err2)
}))
}, 100)
})
} else {
console.log("can not load vimium c:", err)
}
}).then((res) => {
if (!res) {
return;
}
const { host } = res;
console.log("vimium c host:", host); // for example, log "d1ba02e9-ec90-46dc-8623-69e15961cc86"
localStorage.vimiumCHost = host; // cache it for further usages
loadJS(host);
});
})();