40 lines
1.1 KiB
JavaScript
40 lines
1.1 KiB
JavaScript
|
|
// tampermonkey-emulator.js
|
|||
|
|
|
|||
|
|
// 模拟 GM_addStyle
|
|||
|
|
window.GM_addStyle = function(css) {
|
|||
|
|
const style = document.createElement('style');
|
|||
|
|
style.textContent = css;
|
|||
|
|
document.head.appendChild(style);
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 模拟 GM_xmlhttpRequest
|
|||
|
|
window.GM_xmlhttpRequest = function(opts) {
|
|||
|
|
fetch(opts.url, {
|
|||
|
|
method: opts.method || 'GET',
|
|||
|
|
headers: opts.headers || {},
|
|||
|
|
body: opts.data || null,
|
|||
|
|
mode: 'cors',
|
|||
|
|
credentials: 'include'
|
|||
|
|
}).then(res => res.text()).then(text => {
|
|||
|
|
if (opts.onload) opts.onload({ status: 200, responseText: text });
|
|||
|
|
}).catch(err => {
|
|||
|
|
if (opts.onerror) opts.onerror(err);
|
|||
|
|
});
|
|||
|
|
};
|
|||
|
|
|
|||
|
|
// 模拟 unsafeWindow(直接指向 window)
|
|||
|
|
window.unsafeWindow = window;
|
|||
|
|
|
|||
|
|
// 模拟 @run-at document-end
|
|||
|
|
function runUserScript1() {
|
|||
|
|
// 这里动态加载原始脚本
|
|||
|
|
const script = document.createElement('script');
|
|||
|
|
script.src = '/auto.js'; // 原始脚本,不改
|
|||
|
|
document.head.appendChild(script);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (document.readyState === 'loading') {
|
|||
|
|
document.addEventListener('DOMContentLoaded', runUserScript1);
|
|||
|
|
} else {
|
|||
|
|
runUserScript1();
|
|||
|
|
}
|