增加通知
This commit is contained in:
parent
f6a6317a13
commit
feae11dd78
@ -1,8 +1,8 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @lastmodified 202201261722
|
// @lastmodified 202201271811
|
||||||
// @name Torn翻译
|
// @name Torn翻译
|
||||||
// @namespace WOOH
|
// @namespace WOOH
|
||||||
// @version 0.3.1
|
// @version 0.3.2
|
||||||
// @description Torn UI翻译
|
// @description Torn UI翻译
|
||||||
// @author Woohoo[2687093] Sabrina_Devil[2696209]
|
// @author Woohoo[2687093] Sabrina_Devil[2696209]
|
||||||
// @match https://www.torn.com/*
|
// @match https://www.torn.com/*
|
||||||
@ -23,13 +23,18 @@
|
|||||||
if (window.WHTRANS) return;
|
if (window.WHTRANS) return;
|
||||||
window.WHTRANS = true;
|
window.WHTRANS = true;
|
||||||
// 版本
|
// 版本
|
||||||
const version = '0.3.1';
|
const version = '0.3.2';
|
||||||
// 修改历史
|
// 修改历史
|
||||||
const changelist = [
|
const changelist = [
|
||||||
{
|
{
|
||||||
todo: true,
|
todo: true,
|
||||||
cont: `翻译:baza npc商店、imarket、imarket搜索结果`,
|
cont: `翻译:baza npc商店、imarket、imarket搜索结果`,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
ver: '0.3.2',
|
||||||
|
date: '20220127',
|
||||||
|
cont: `增加通知`,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
ver: '0.3.1',
|
ver: '0.3.1',
|
||||||
date: '20220126',
|
date: '20220126',
|
||||||
@ -3350,18 +3355,18 @@
|
|||||||
clickFunc: function (e) {
|
clickFunc: function (e) {
|
||||||
e.target.blur();
|
e.target.blur();
|
||||||
if (getScriptEngine() === UserScriptEngine.PDA && !window.location.href.includes('crimes.php')) {
|
if (getScriptEngine() === UserScriptEngine.PDA && !window.location.href.includes('crimes.php')) {
|
||||||
window.alert('因PDA 或 Torn 限制无法开启飞贼小助手,即将转跳至 Crime 页面。')
|
notify('因PDA 或 Torn 限制仅某些页面(如 Crime 页面)可开启飞贼小助手,即将转跳,请转跳后开启。后续将会改善。', 3,
|
||||||
window.location.href = 'https://www.torn.com/crimes.php';
|
() => window.location.href = 'https://www.torn.com/crimes.php');
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
const popup_node = popupMsg(`加载中 ${loading_gif_html}<br/>`, '飞贼助手加载');
|
// const popup_node = popupMsg(`加载中 ${loading_gif_html}<br/>`, '飞贼助手加载');
|
||||||
if (!GS.LOADED) {
|
if (!GS.LOADED) {
|
||||||
COFetch('https://cdn.staticfile.org/vue/2.2.2/vue.min.js')
|
COFetch('https://cdn.staticfile.org/vue/2.2.2/vue.min.js')
|
||||||
.catch(err => popup_node.innerHTML = err)
|
.catch(err => notify(err))
|
||||||
.then(VueJS => {
|
.then(VueJS => {
|
||||||
window.eval(VueJS);
|
window.eval(VueJS);
|
||||||
GS.LOADED = true;
|
GS.LOADED = true;
|
||||||
popup_node.innerHTML += '已载入依赖<br/>';
|
notify('已载入依赖');
|
||||||
window.GM_getValue = (k, v = undefined) => {
|
window.GM_getValue = (k, v = undefined) => {
|
||||||
const objV = JSON.parse(window.localStorage.getItem('wh-gs-storage') || '{}')[k];
|
const objV = JSON.parse(window.localStorage.getItem('wh-gs-storage') || '{}')[k];
|
||||||
return objV || v;
|
return objV || v;
|
||||||
@ -3391,12 +3396,12 @@
|
|||||||
}
|
}
|
||||||
window.eval(GSJS);
|
window.eval(GSJS);
|
||||||
if (isDev()) window.GM_setValue("gsp_showContent", true);
|
if (isDev()) window.GM_setValue("gsp_showContent", true);
|
||||||
popup_node.innerHTML += '飞贼助手已载入<br/>';
|
notify('飞贼助手已载入');
|
||||||
})
|
})
|
||||||
.catch(err => popup_node.innerHTML = `PDA API错误。${err}`);
|
.catch(err => notify(`PDA API错误。${err}`));
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
popup_node.innerHTML += '飞贼助手已经加载了';
|
notify('飞贼助手已经加载了');
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
@ -3449,61 +3454,69 @@
|
|||||||
domId: 'wh-test-btn',
|
domId: 'wh-test-btn',
|
||||||
domText: '测试按钮',
|
domText: '测试按钮',
|
||||||
clickFunc: function () {
|
clickFunc: function () {
|
||||||
log(window, document)
|
let pop = popupMsg('');
|
||||||
// let pop = popupMsg('');
|
let ifr = document.createElement('iframe');
|
||||||
// let ifr = document.createElement('iframe');
|
ifr.src = 'https://www.torn.com/crimes.php';
|
||||||
// ifr.src = 'https://www.torn.com/crimes.php';
|
document.body.append(ifr)
|
||||||
// document.body.append(ifr)
|
log(ifr.contentDocument)
|
||||||
// log(ifr.contentDocument)
|
ifr.onload = () => {
|
||||||
// ifr.onload = () => {
|
const _window = ifr.contentWindow;
|
||||||
// const _window = ifr.contentWindow;
|
const _docu = _window.document;
|
||||||
// const _docu = _window.document;
|
_docu.head.innerHTML = '';
|
||||||
// _docu.head.innerHTML = '';
|
_docu.body.innerHTML = '';
|
||||||
// _docu.body.innerHTML = '';
|
COFetch('https://cdn.staticfile.org/vue/2.2.2/vue.min.js')
|
||||||
// COFetch('https://cdn.staticfile.org/vue/2.2.2/vue.min.js')
|
// .catch(err => popup_node.innerHTML = err)
|
||||||
// // .catch(err => popup_node.innerHTML = err)
|
.then(vuejs => {
|
||||||
// .then(vuejs => {
|
_window.eval(vuejs)
|
||||||
// _window.eval(vuejs)
|
log('Vue: ', typeof _window.Vue)
|
||||||
// log('Vue: ', typeof _window.Vue)
|
// Eval(vuejs).catch(err => log(err)).then(() => {
|
||||||
// // Eval(vuejs).catch(err => log(err)).then(() => {
|
// muggerInter.hasVue = true;
|
||||||
// // muggerInter.hasVue = true;
|
// popup_node.innerHTML += '依赖已载入<br/>';
|
||||||
// // popup_node.innerHTML += '依赖已载入<br/>';
|
_window.GM_getValue = (k, v = undefined) => {
|
||||||
// _window.GM_getValue = (k, v = undefined) => {
|
const objV = JSON.parse(_window.localStorage.getItem('wh-gs-storage') || '{}')[k];
|
||||||
// const objV = JSON.parse(_window.localStorage.getItem('wh-gs-storage') || '{}')[k];
|
return objV || v;
|
||||||
// return objV || v;
|
};
|
||||||
// };
|
_window.GM_setValue = (k, v) => {
|
||||||
// _window.GM_setValue = (k, v) => {
|
const obj = JSON.parse(_window.localStorage.getItem('wh-gs-storage') || '{}');
|
||||||
// const obj = JSON.parse(_window.localStorage.getItem('wh-gs-storage') || '{}');
|
obj[k] = v;
|
||||||
// obj[k] = v;
|
_window.localStorage.setItem('wh-gs-storage', JSON.stringify(obj));
|
||||||
// _window.localStorage.setItem('wh-gs-storage', JSON.stringify(obj));
|
};
|
||||||
// };
|
COFetch(`https://gitee.com/ameto_kasao/tornjs/raw/master/GoldenSnitch.js?${performance.now()}`)
|
||||||
// COFetch(`https://gitee.com/ameto_kasao/tornjs/raw/master/GoldenSnitch.js?${performance.now()}`)
|
.then(res => {
|
||||||
// .then(res => {
|
// if (getScriptEngine() === UserScriptEngine.GM) {
|
||||||
// // if (getScriptEngine() === UserScriptEngine.GM) {
|
// ifr.contentWindow.GM_xmlhttpRequest = GM_xmlhttpRequest;
|
||||||
// // ifr.contentWindow.GM_xmlhttpRequest = GM_xmlhttpRequest;
|
// } else
|
||||||
// // } else
|
if (getScriptEngine() === UserScriptEngine.PDA) {
|
||||||
// if (getScriptEngine() === UserScriptEngine.PDA) {
|
res = res.replace('http://222.160.142.50:8154/mugger', `https://jjins.github.io/mugger.json?${performance.now()}`);
|
||||||
// res = res.replace('http://222.160.142.50:8154/mugger', `https://jjins.github.io/mugger.json?${performance.now()}`);
|
_window.GM_xmlhttpRequest = function (opt) {
|
||||||
// _window.GM_xmlhttpRequest = function (opt) {
|
// 暂不适配pda post
|
||||||
// // 暂不适配pda post
|
if (opt.method.toLowerCase() === 'post') return;
|
||||||
// if (opt.method.toLowerCase() === 'post') return;
|
COFetch(opt.url).then(res => {
|
||||||
// COFetch(opt.url).then(res => {
|
const obj = {};
|
||||||
// const obj = {};
|
obj.responseText = res;
|
||||||
// obj.responseText = res;
|
opt.onload(obj);
|
||||||
// opt.onload(obj);
|
});
|
||||||
// });
|
};
|
||||||
// };
|
}
|
||||||
// }
|
_window.eval(res);
|
||||||
// _window.eval(res);
|
// Eval(res).catch(err => log(err)).then(() => {
|
||||||
// // Eval(res).catch(err => log(err)).then(() => {
|
if (isDev()) _window.GM_setValue("gsp_showContent", true)
|
||||||
// if (isDev()) _window.GM_setValue("gsp_showContent", true)
|
// });
|
||||||
// // });
|
// popup_node.innerHTML += '飞贼助手已载入<br/>';
|
||||||
// // popup_node.innerHTML += '飞贼助手已载入<br/>';
|
})
|
||||||
// })
|
// .catch(err => popup_node.innerHTML = `PDA API错误。${err}`);
|
||||||
// // .catch(err => popup_node.innerHTML = `PDA API错误。${err}`);
|
// })
|
||||||
// // })
|
});
|
||||||
// });
|
};
|
||||||
// };
|
},
|
||||||
|
})
|
||||||
|
// 测试按钮2
|
||||||
|
if (isDev()) settingsArr.push({
|
||||||
|
domType: 'button',
|
||||||
|
domId: 'wh-test2-btn',
|
||||||
|
domText: '测试按钮2',
|
||||||
|
clickFunc: function () {
|
||||||
|
notify(`测试${getRandomInt(0, 99999)}`, 5, () => log('通知关闭'));
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -4117,7 +4130,7 @@ padding: 0.5em 0;
|
|||||||
<div id="wh-trv-alarm-bottom">
|
<div id="wh-trv-alarm-bottom">
|
||||||
<div id="wh-trv-alarm-cont">
|
<div id="wh-trv-alarm-cont">
|
||||||
<p id="wh-trv-alarm-remaining"></p>
|
<p id="wh-trv-alarm-remaining"></p>
|
||||||
<p><span id="wh-trv-status">正在${dest_cn === '回城' ? dest_cn : '飞往' + dest_cn}</span><span>✈</span></p>
|
<p><span id="wh-trv-status">正在${dest_cn === '回城' ? dest_cn : '飞往' + dest_cn} </span><span>✈</span></p>
|
||||||
<div><label><input type="checkbox" ${wh_trv_alarm.enable ? 'checked ' : ' '}/> 开启闹钟</label></div>
|
<div><label><input type="checkbox" ${wh_trv_alarm.enable ? 'checked ' : ' '}/> 开启闹钟</label></div>
|
||||||
<div><label>落地前响铃时长(秒): <input type="number" value="${wh_trv_alarm.alert_time || 30}" /></label><button>确定</button></div>
|
<div><label>落地前响铃时长(秒): <input type="number" value="${wh_trv_alarm.alert_time || 30}" /></label><button>确定</button></div>
|
||||||
<div class="wh-trv-alarm-stop-hide"><button>停止闹钟</button></div>
|
<div class="wh-trv-alarm-stop-hide"><button>停止闹钟</button></div>
|
||||||
@ -4288,7 +4301,7 @@ display:none;
|
|||||||
remaining_node.innerText = `${remaining_time / 3600 | 0}时${remaining_time % 3600 / 60 | 0}分${remaining_time % 60}秒`;
|
remaining_node.innerText = `${remaining_time / 3600 | 0}时${remaining_time % 3600 / 60 | 0}分${remaining_time % 60}秒`;
|
||||||
|
|
||||||
if (remaining_time < wh_trv_alarm.alert_time) {
|
if (remaining_time < wh_trv_alarm.alert_time) {
|
||||||
flying_status.innerHTML = `即将落地...`;
|
// flying_status.innerHTML = `即将落地...`;
|
||||||
if (wh_trv_alarm.enable) {
|
if (wh_trv_alarm.enable) {
|
||||||
// 播放提示音
|
// 播放提示音
|
||||||
audio_play_flag = true;
|
audio_play_flag = true;
|
||||||
@ -4296,7 +4309,7 @@ display:none;
|
|||||||
stop_node.parentElement.classList.remove('wh-trv-alarm-stop-hide');
|
stop_node.parentElement.classList.remove('wh-trv-alarm-stop-hide');
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
flying_status.innerHTML = `飞行中...`;
|
// flying_status.innerHTML = `飞行中...`;
|
||||||
if (wh_trv_alarm.enable) {
|
if (wh_trv_alarm.enable) {
|
||||||
clearInterval(audio_play_id);
|
clearInterval(audio_play_id);
|
||||||
audio_play_id = null;
|
audio_play_id = null;
|
||||||
@ -8220,6 +8233,7 @@ margin: 0 0 3px;
|
|||||||
*/
|
*/
|
||||||
function saveSettings() {
|
function saveSettings() {
|
||||||
// 通知
|
// 通知
|
||||||
|
notify('已保存设置', 3)
|
||||||
|
|
||||||
localStorage.setItem('wh_trans_settings', JSON.stringify(wh_trans_settings));
|
localStorage.setItem('wh_trans_settings', JSON.stringify(wh_trans_settings));
|
||||||
}
|
}
|
||||||
@ -8365,8 +8379,110 @@ margin: 0 0 3px;
|
|||||||
return rs += '}';
|
return rs += '}';
|
||||||
}
|
}
|
||||||
|
|
||||||
// log改写
|
// console.log改写
|
||||||
function log(...o) {
|
function log(...o) {
|
||||||
if (isDev()) console.log('[WH]', ...o)
|
if (isDev()) console.log('[WH]', ...o)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 通知
|
||||||
|
*
|
||||||
|
* @param msg 通知上显示的内容,默认为空
|
||||||
|
* @param timeout 停留的时间,默认3秒
|
||||||
|
* @param callback 通知结束后执行的函数
|
||||||
|
* @returns HTMLElement 通知的node
|
||||||
|
*/
|
||||||
|
function notify(msg = '', timeout = 3, callback = () => null) {
|
||||||
|
const date = new Date();
|
||||||
|
// 通知的唯一id
|
||||||
|
const uid = `${date.getHours()}${date.getSeconds()}${date.getMilliseconds()}${getRandomInt(1000, 9999)}`;
|
||||||
|
// 通知容器id
|
||||||
|
const node_id = 'wh-notify';
|
||||||
|
// 通知的容器
|
||||||
|
let notify_contain = document.querySelector(`#${node_id}`);
|
||||||
|
// 添加通知到容器
|
||||||
|
const add_notify = () => {
|
||||||
|
// 每条通知
|
||||||
|
const new_node = document.createElement('div');
|
||||||
|
new_node.id = `wh-notify-${uid}`;
|
||||||
|
new_node.classList.add('wh-notify-item');
|
||||||
|
new_node.innerHTML = `<div class="wh-notify-bar"></div>
|
||||||
|
<div class="wh-notify-cont">
|
||||||
|
<div class="wh-notify-close"><button>关闭</button></div>
|
||||||
|
<div class="wh-notify-msg"><p>${msg}</p></div>
|
||||||
|
</div>`;
|
||||||
|
notify_contain.append(new_node);
|
||||||
|
// 进度条node
|
||||||
|
const progressBar = new_node.querySelector('.wh-notify-bar');
|
||||||
|
// 是否hover
|
||||||
|
let mouse_enter = false;
|
||||||
|
new_node.addEventListener('mouseenter', () => mouse_enter = true, true);
|
||||||
|
new_node.addEventListener('mouseleave', () => mouse_enter = false);
|
||||||
|
// 通知进度条
|
||||||
|
let progressCount = 101;
|
||||||
|
// 计时器
|
||||||
|
let intervalID = window.setInterval(() => {
|
||||||
|
if (mouse_enter) {
|
||||||
|
progressCount = 101;
|
||||||
|
progressBar.style.width = '100%';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
progressCount--;
|
||||||
|
progressBar.style.width = `${progressCount}%`;
|
||||||
|
if (progressCount === 0) removeNode();
|
||||||
|
}, timeout * 1000 / 100);
|
||||||
|
// 删除通知
|
||||||
|
const removeNode = () => {
|
||||||
|
clearInterval(intervalID);
|
||||||
|
new_node.remove();
|
||||||
|
callback();
|
||||||
|
};
|
||||||
|
new_node.querySelector('.wh-notify-close button').addEventListener('click', removeNode);
|
||||||
|
};
|
||||||
|
// 存在容器 添加新通知
|
||||||
|
if (!!notify_contain) {
|
||||||
|
add_notify();
|
||||||
|
}
|
||||||
|
// 不存在容器 创建后添加
|
||||||
|
else {
|
||||||
|
notify_contain = document.createElement('div');
|
||||||
|
notify_contain.id = node_id;
|
||||||
|
addStyle(`
|
||||||
|
#${node_id} {
|
||||||
|
/*height: 500px;
|
||||||
|
background: red;*/
|
||||||
|
|
||||||
|
display: inline-block;
|
||||||
|
position: fixed;
|
||||||
|
top: 0;
|
||||||
|
left: calc(50% - 180px);
|
||||||
|
width: 360px;
|
||||||
|
z-index: 200000;
|
||||||
|
}
|
||||||
|
#${node_id} .wh-notify-item {
|
||||||
|
/*height: 50px;*/
|
||||||
|
background: rgb(239 249 255 / 90%);
|
||||||
|
border-radius: 2px;
|
||||||
|
margin: 0.5em 0 0 0;
|
||||||
|
box-shadow: 0 0 5px 0px #959595;
|
||||||
|
}
|
||||||
|
#${node_id} .wh-notify-item:hover {
|
||||||
|
background: rgb(239 249 255 / 98%);
|
||||||
|
}
|
||||||
|
#${node_id} .wh-notify-item .wh-notify-bar {
|
||||||
|
height:2px;
|
||||||
|
background:#2196f3;
|
||||||
|
}
|
||||||
|
#${node_id} .wh-notify-item .wh-notify-close {
|
||||||
|
float:right;
|
||||||
|
padding: 1em 0;
|
||||||
|
}
|
||||||
|
#${node_id} .wh-notify-item .wh-notify-msg {
|
||||||
|
padding:1.4em 1em;
|
||||||
|
}
|
||||||
|
`);
|
||||||
|
document.body.append(notify_contain);
|
||||||
|
add_notify();
|
||||||
|
}
|
||||||
|
}
|
||||||
}());
|
}());
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user