46 lines
1.4 KiB
JavaScript
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);
|
|
});
|
|
})(); |