63 lines
2.8 KiB
TypeScript
63 lines
2.8 KiB
TypeScript
// 跨域get请求 返回text
|
||
import UserScriptEngine from "../../enum/UserScriptEngine";
|
||
|
||
function COFetch(url, method = 'get', body = null) {
|
||
const engine = getScriptEngine();
|
||
switch (engine) {
|
||
case UserScriptEngine.RAW: {
|
||
return new Promise((_, reject) => {
|
||
console.error(`[wh] 跨域请求错误:${UserScriptEngine.RAW}环境下无法进行跨域请求`);
|
||
reject(`错误:${UserScriptEngine.RAW}环境下无法进行跨域请求`);
|
||
});
|
||
}
|
||
case UserScriptEngine.PDA: {
|
||
const {PDA_httpGet, PDA_httpPost} = window;
|
||
return method === 'get' ?
|
||
// get
|
||
new Promise((resolve, reject) => {
|
||
if (typeof PDA_httpGet !== 'function') {
|
||
console.error('[wh] 跨域请求错误:PDA版本不支持');
|
||
reject('错误:PDA版本不支持');
|
||
}
|
||
PDA_httpGet(url)
|
||
.catch(e => {
|
||
console.error('[wh] 网络错误', e);
|
||
reject(`[wh] 网络错误 ${e}`);
|
||
})
|
||
.then(res => resolve(res.responseText));
|
||
}) :
|
||
// post
|
||
new Promise((resolve, reject) => {
|
||
if (typeof PDA_httpPost !== 'function') {
|
||
console.error('[wh] 跨域请求错误:PDA版本不支持');
|
||
reject('错误:PDA版本不支持');
|
||
}
|
||
PDA_httpPost(url, {'content-type': 'application/json'}, body)
|
||
.catch(e => {
|
||
console.error('[wh] 网络错误', e);
|
||
reject(`[wh] 网络错误 ${e}`);
|
||
})
|
||
.then(res => resolve(res.responseText));
|
||
});
|
||
}
|
||
case UserScriptEngine.GM: {
|
||
return new Promise((resolve, reject) => {
|
||
if (typeof GM_xmlhttpRequest !== 'function') {
|
||
console.error('[wh] 跨域请求错误:用户脚本扩展API错误');
|
||
reject('错误:用户脚本扩展API错误');
|
||
}
|
||
GM_xmlhttpRequest({
|
||
method: method,
|
||
url: url,
|
||
data: method === 'get' ? null : body,
|
||
headers: method === 'get' ? null : {'content-type': 'application/json'},
|
||
onload: res => resolve(res.response),
|
||
onerror: res => reject(`连接错误 ${JSON.stringify(res)}`),
|
||
ontimeout: res => reject(`连接超时 ${JSON.stringify(res)}`),
|
||
});
|
||
});
|
||
}
|
||
}
|
||
}
|
||
|
||
export default COFetch |