11// ==UserScript==
22// @name NGA表情管理器
33// @namespace https://github.com/jc3213
4- // @version 2.0.1
4+ // @version 2.0.2
55// @description 为NGA论坛添加/删除新表情
66// @author jc3213
77// @match *://bbs.nga.cn/thread.php?*
1919// @grant GM_listValues
2020// ==/UserScript==
2121
22- let emojiPackage = GM_getValue ( 'emoji' ) ;
23- if ( emojiPackage === undefined ) {
24- emojiPackage = GM_listValues ( ) . map ( ( i ) => {
25- if ( i === 'bookmark' ) return ;
26- let value = GM_getValue ( i ) ;
27- GM_deleteValue ( i ) ;
28- return [ i , value ] ;
29- } ) ;
30- GM_setValue ( 'emoji' , emojiPackage ) ;
31- }
32- console . log ( emojiPackage ) ;
33- let emojis = new Map ( emojiPackage ) ;
22+ let emojis = new Map ( GM_getValue ( 'emoji' , [ ] ) ) ;
3423let emojiUI = { } ;
3524let emojiTab ;
3625let emojiPanel ;
@@ -40,19 +29,24 @@ css.innerText = `.single_ttip2 img { max-height: 64px; }`
4029document . head . append ( css ) ;
4130
4231let manager = document . createElement ( 'button' ) ;
43- manager . innerText = '添加新表情' ;
32+ manager . textContent = '添加新表情' ;
4433manager . className = 'block_txt_big' ;
45- manager . addEventListener ( 'click' , async ( event ) => {
46- let handles = await document . defaultView . showOpenFilePicker ( { types : [ { description : 'JSON 文件' , accept : { 'application/json' : [ '.json' ] } } ] , multiple : true } ) ;
47- Promise . all ( handles . map ( async ( handler ) => {
48- let file = await handler . getFile ( ) ;
34+ manager . addEventListener ( 'click' , ( event ) => loader . click ( ) ) ;
35+
36+ let loader = document . createElement ( 'input' ) ;
37+ loader . type = 'file' ;
38+ loader . accept = '.json' ;
39+ loader . multiple = true ;
40+ loader . addEventListener ( 'change' , ( event ) => {
41+ [ ...event . target . files ] . forEach ( async ( file ) => {
4942 let text = await file . text ( ) ;
5043 let { name, emoji, author } = JSON . parse ( text ) ;
5144 if ( ! name || ! emoji ) return ;
5245 emojis . set ( name , { author, emoji } ) ;
5346 GM_setValue ( 'emoji' , [ ...emojis ] ) ;
5447 printEmojiUI ( name , author , emoji ) ;
55- } ) ) ;
48+ } ) ;
49+ event . target . value = '' ;
5650} ) ;
5751
5852function printEmojiUI ( name , author , emoji ) {
@@ -64,12 +58,12 @@ function printEmojiUI(name, author, emoji) {
6458function createEmojiUI ( name , author , emoji ) {
6559 let tab = document . createElement ( 'button' ) ;
6660 tab . className = 'block_txt_big' ;
67- tab . innerText = name ;
61+ tab . textContent = name ;
6862 tab . title = author ? '制作者: ' + author : '' ;
6963 manager . before ( tab ) ;
7064 let panel = document . createElement ( 'div' ) ;
7165 emojiPanel . append ( panel ) ;
72- tab . addEventListener ( 'click' , event => {
66+ tab . addEventListener ( 'click' , ( event ) => {
7367 if ( event . ctrlKey && confirm ( '确定要删除表情包【' + name + '】吗?' ) ) {
7468 emojis . delete ( name ) ;
7569 GM_setValue ( 'emoji' , [ ...emojis ] ) ;
0 commit comments