Sleazy Fork is available in English.

jav清单

jav清单,替代原网页我的清单,可用作自定义标签

  1. // ==UserScript==
  2. // @name jav清单
  3. // @namespace http://tampermonkey.net/
  4. // @version 1.5
  5. // @description jav清单,替代原网页我的清单,可用作自定义标签
  6. // @author lyscop
  7. // @grant GM_openInTab
  8. // @grant GM_xmlhttpRequest
  9. // @grant GM_setValue
  10. // @grant GM_getValue
  11. // @grant GM_setClipboard
  12. // @grant GM_info
  13. // @grant GM_openInTab
  14. // @grant GM_deleteValue
  15. // @grant GM_listValues
  16. // @license MIT
  17. // @include *://*javdb*.com/*
  18. // @include *://*javdb*.com/v/*
  19. // @include *://javdb*.com/actors/*
  20. // @include *://*javdb*.com/users/lists*
  21. // @include *://*javdb*.com/users/collection_actors*
  22. // @include /^.*(jav|bus|dmm|see|cdn|fan){2}\..*$/
  23. // @include *://www.javbus.com/*
  24. // @include *://javdb*.com/v/*
  25. // @include *://javdb*.com/search?q=*
  26. // @include *://www.javdb.com/*
  27. // @include *://*.javlib.com/*
  28. // @include *://*.javlibrary.com/*
  29. // @include *://*/cn/?v=jav*
  30. // @include *://*/en/?v=jav*
  31. // @include *://*/tw/?v=jav*
  32. // @include *://*/ja/?v=jav*
  33. // @include *://*.javlib.com/*
  34. // @include *://*.javlibrary.com/*
  35. // @include *://*/tw/movie/jav*
  36. // @run-at document-end
  37. // @require https://cdn.jsdelivr.net/npm/jquery@2.2.3/dist/jquery.min.js
  38. // ==/UserScript==
  39.  
  40.  
  41. (function() {
  42.  
  43. 'use strict';
  44.  
  45.  
  46. var image = 'data:image/png;base64,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';
  47.  
  48. let d = new Date();
  49. let TimeDateFormatText = '[Year]/[Month]/[Day] [Hour]:[Minute]:[Second]';
  50. let timetext = TimeDateFormatText.replace(/\[YEAR\]/gi, d.getFullYear().toString()).replace(/\[MONTH\]/gi, ('0' +(d.getMonth()+1).toString()).slice(-2)).replace(/\[DAY\]/gi, ('0' +d.getDate().toString()).slice(-2)).replace(/\[HOUR\]/gi, ('0' +d.getHours().toString()).slice(-2)).replace(/\[MINUTE\]/gi, ('0' +d.getMinutes().toString()).slice(-2)).replace(/\[SECOND\]/gi, ('0' +d.getSeconds().toString()).slice(-2));
  51.  
  52. var origninfo;
  53.  
  54. let videoFanhao;
  55. let videoTitle;
  56. let videoName;
  57. let videoDate;
  58. let videoCover;
  59. let videoUrl = window.location.href;
  60. let videoaddDate = timetext;
  61.  
  62. if(videoUrl.indexOf('javdb') > -1) {
  63. origninfo = document.querySelectorAll('.is-size-7.has-text-grey')[0].innerHTML.trim();
  64. videoFanhao = document.querySelector('[data-clipboard-text]').attributes[2].value;
  65. videoTitle = document.getElementsByClassName('current-title')[0].innerHTML;
  66. videoDate = document.getElementsByClassName('panel movie-panel-info')[0].childNodes[3].childNodes[3].innerHTML;
  67. videoCover = document.getElementsByClassName('video-cover')[0].src;
  68. } else if(videoUrl.indexOf('javbus') > -1 || videoUrl.match(/^.*(jav|bus|dmm|see|cdn|fan){2}\..*$/)) {
  69. videoFanhao = document.getElementsByClassName('col-md-3 info')[0].children[0].children[1].innerHTML;
  70. videoTitle = document.getElementsByTagName('h3')[0].innerHTML.slice(document.getElementsByTagName('h3')[0].innerHTML.indexOf(' ') + 1);
  71. videoDate = document.getElementsByClassName('col-md-3 info')[0].children[1].innerText.split(': ')[1];
  72. videoCover = document.getElementsByClassName('bigImage')[0].children[0].src;
  73. } else if(videoUrl.indexOf('javlib') > -1) {
  74. videoFanhao = document.getElementById('video_id').children[0].children[0].children[0].children[1].innerHTML;
  75. videoTitle = document.getElementsByClassName('post-title text')[0].children[0].innerHTML.slice(document.getElementsByClassName('post-title text')[0].children[0].innerHTML.indexOf(' ') + 1);
  76. videoDate = document.getElementById('video_date').children[0].children[0].children[0].children[1].innerHTML;
  77. videoCover = document.getElementById('video_jacket_img').src;
  78. }
  79.  
  80. let allValue = GM_listValues();
  81. var inLists = '';
  82. var listsShow = false;
  83.  
  84. var newArray = [];
  85.  
  86. const buttonG = document.createElement('button');
  87.  
  88. if(videoUrl.indexOf('javdb') > -1) {
  89. buttonG.style.borderColor = '#dbdbdb';
  90. buttonG.style.backgroundColor = "#fff";
  91. buttonG.style.color = '#363636';
  92. document.querySelectorAll('.panel-block div.buttons')[0].appendChild(buttonG);
  93. buttonG.classList.add('button', 'is-info', 'is-outlined', 'button-c');
  94. } else if(videoUrl.indexOf('javbus') > -1 || videoUrl.match(/^.*(jav|bus|dmm|see|cdn|fan){2}\..*$/)) {
  95. var divBus = document.getElementsByClassName('col-md-3 info')[0];
  96. console.log(divBus)
  97. var inlistDiv = document.createElement('div');
  98. buttonG.style.border = '1px solid #d1d1d1';
  99. buttonG.style.backgroundColor = "#fff";
  100. buttonG.style.marginBottom = '10px';
  101. divBus.appendChild(buttonG);
  102.  
  103. inlistDiv.className = 'inListBus'
  104. inlistDiv.style.marginBottom = '10px';
  105. divBus.appendChild(inlistDiv);
  106. } else if(videoUrl.indexOf('javlib') > -1) {
  107. var divLibs = document.getElementById('video_favorite_edit');
  108. var inlistSpan = document.createElement('span');
  109. var spanLib = document.createElement('span');
  110. inlistSpan.className = "favoritetype";
  111. buttonG.className = 'smallbutton';
  112. inlistSpan.appendChild(buttonG);
  113. divLibs.appendChild(inlistSpan);
  114.  
  115. spanLib.className = "favoritetype";
  116. divLibs.appendChild(spanLib);
  117. }
  118.  
  119. buttonG.innerHTML = '清单';
  120.  
  121. buttonG.addEventListener('click', () => {
  122. listssettings();
  123. window.setTimeout(function(){
  124. listsShow = true;
  125. }, 300);
  126.  
  127. });
  128.  
  129. allValue = GM_listValues();
  130. allValue.forEach(function (obj, i) {//数组
  131. var newListEle = {};
  132.  
  133. newListEle['name'] = obj;
  134. newListEle['count'] = Object.values(GM_getValue(obj)).length;
  135. newArray.push(newListEle);
  136. });
  137. newArray.sort(compare( "count"));
  138.  
  139. newArray.forEach(function (obj, i) {//数组
  140. Object.values(GM_getValue(obj.name)).forEach(function (value, index) {//数组
  141. //console.log(value.fanhao);
  142. if(value.fanhao == videoFanhao) {
  143. if(inLists == ' ') {
  144. inLists = obj.name;
  145. } else {
  146. inLists = inLists + '  ' + obj.name;
  147. }
  148. }
  149. });
  150. });
  151. // console.log(inLists);
  152. if(inLists) {
  153. if(videoUrl.indexOf('javdb') > -1) {
  154. document.querySelectorAll('.is-size-7.has-text-grey')[0].innerHTML = origninfo + '   ' + inLists;
  155. } else if(videoUrl.indexOf('javbus') > -1 || videoUrl.match(/^.*(jav|bus|dmm|see|cdn|fan){2}\..*$/)) {
  156. document.getElementsByClassName('inListBus')[0].innerHTML = inLists;
  157. } else if(videoUrl.indexOf('javlib') > -1) {
  158. document.getElementsByClassName('col-md-3 info')[0].innerHTML = inLists;
  159. }
  160. }
  161.  
  162. document.addEventListener('mouseover', function (e) {
  163. if(e.target.className === 'button is-info is-outlined button-c') {
  164. e.target.style.borderColor = "#b5b5b5";
  165. }
  166. });
  167. document.addEventListener('mouseout', function (e) {
  168. if(e.target.className === 'button is-info is-outlined button-c') {
  169. e.target.style.borderColor = "#dbdbdb";
  170. }
  171. });
  172. document.addEventListener('click', function (e) {
  173. if(e.target.className === 'button is-info is-outlined button-c') {
  174. e.target.blur()
  175. }
  176. });
  177.  
  178.  
  179. var nodeEle = document.createElement('div');
  180. nodeEle.id = "Lists";
  181.  
  182. document.documentElement.appendChild(nodeEle);//元素加入body
  183.  
  184. var wid = window.screen.width/2 - 120;
  185. var hei = window.screen.height/2 - 360;
  186. var flag = false;
  187.  
  188. function listssettings() {
  189. const nodeDiv = document.getElementById("Lists");
  190. nodeDiv.innerHTML = '';
  191.  
  192. nodeDiv.setAttribute('style', '' +
  193. 'position:fixed;' +
  194. 'left:' + wid + 'px;' +
  195. 'top:'+ hei + 'px;' +
  196. 'width:277px;' +//最大宽度
  197. 'height:592px;' +//最大高度
  198. 'overflow:auto;' +
  199. 'font-size:14px!important;' +
  200. 'border-radius:5px!important;' +
  201. //'border:none;' +
  202. //'border:1px solid #ccc!important;' +
  203. 'border:1px solid #a9a9a9!important;' +
  204. 'background-color:#fff!important;' +
  205. 'z-index:2147483647!important;' +//显示最顶层
  206. '');
  207. nodeDiv.style.display = 'block';
  208.  
  209.  
  210. var titlenode = document.createElement('div');
  211.  
  212. titlenode.style.border = '1px';
  213. titlenode.style.marginTop = '8px';
  214. titlenode.style.marginBottom = '8px';
  215.  
  216. const nameDiv = document.createElement('div');
  217.  
  218. nameDiv.style.marginLeft = '18px';
  219. nameDiv.style.display = 'inline-block';
  220. nameDiv.innerHTML = '清单 (' + allValue.length + ')';
  221. nameDiv.style.marginRight = '5px';
  222. nameDiv.addEventListener('click', () => {
  223. //showList('丝袜', 0);
  224.  
  225. });
  226.  
  227. const addlist = document.createElement('img');
  228.  
  229. addlist.setAttribute('src', image);
  230. addlist.setAttribute('style', '' + 'width:16px;' + 'height:16px;' + 'margin-bottom: 1px;' + 'vertical-align:text-bottom;' + '');
  231. addlist.setAttribute('alt', '新增清单');
  232. addlist.setAttribute('title', '新增清单');
  233. addlist.style.marginRight = '90px';
  234. addlist.addEventListener('click', () => {//新增
  235. var newList = prompt('请输入信息');
  236. var listFlag = false;
  237. allValue = GM_listValues();
  238. allValue.forEach(function (obj, i) {//数组
  239. if(newList == obj) listFlag = true;
  240. });
  241. if(newList && !listFlag) {
  242. GM_setValue(newList, []);
  243. listssettings();
  244. showclipboard('新增清单 ' + newList);
  245. } else if(!newList) {
  246. showclipboard('未输入', 1);
  247. } else if(listFlag) {
  248. showclipboard('已存在 ' + newList, 0);
  249. }
  250. });
  251.  
  252. var inputSpan = document.createElement('span');
  253. inputSpan.innerHTML = '导入';
  254. inputSpan.style.color = '#d1d1d1';
  255. inputSpan.style.marginRight = '5px';
  256. inputSpan.style.cursor = "pointer";
  257.  
  258. inputSpan.addEventListener('click', () => {
  259. var input = document.createElement('input');
  260. input.type = 'file';
  261.  
  262. input.addEventListener('change', function(event) {
  263. var file = event.target.files[0];
  264. var reader = new FileReader();
  265. reader.addEventListener('load', function(event) {
  266. var content = event.target.result;
  267. var jsonArray = JSON.parse(content);
  268. console.log(jsonArray); // 输出文件内容
  269. Object.keys(jsonArray).forEach(function (key, index) {//数组
  270. GM_setValue(key, jsonArray[key]);
  271. });
  272. showclipboard('已导入');
  273. });
  274. reader.readAsText(file);
  275. });
  276. input.click();
  277.  
  278. });
  279. inputSpan.addEventListener('mouseover', () => {
  280. inputSpan.style.color = 'black';
  281. });
  282. inputSpan.addEventListener('mouseout', () => {
  283. inputSpan.style.color = '#d1d1d1';
  284. });
  285.  
  286. var outputSpan = document.createElement('span');
  287. outputSpan.innerHTML = '导出';
  288. outputSpan.style.color = '#d1d1d1';
  289. outputSpan.style.marginRight = '10px';
  290. outputSpan.style.cursor = "pointer";
  291.  
  292. outputSpan.addEventListener('click', () => {
  293. var javLists = {};
  294.  
  295. allValue = GM_listValues();
  296. allValue.forEach(function (obj, i) {//数组
  297. javLists[obj] = GM_getValue(obj);
  298. });
  299.  
  300. // var blob = new Blob([JSON.stringify(javLists)], {type:"application/json;charset=utf-8"}).slice(2,-1); //text 内容没有{}不构成json
  301. var blob = new Blob([JSON.stringify(javLists)], {type:"application/json;charset=utf-8"}); //json
  302. var url = URL.createObjectURL(blob);
  303. var elem = document.createElement("a");
  304. elem.href = url;
  305. elem.download = 'javList-Backup-' + timetext;
  306. document.body.appendChild(elem);
  307. elem.click();
  308. document.body.removeChild(elem);
  309.  
  310. showclipboard('已导出');
  311. });
  312. outputSpan.addEventListener('mouseover', () => {
  313. outputSpan.style.color = 'black';
  314. });
  315. outputSpan.addEventListener('mouseout', () => {
  316. outputSpan.style.color = '#d1d1d1';
  317. });
  318.  
  319. var close = document.createElement('div');
  320. close.innerHTML = '×';
  321. close.title = 'Close';
  322. close.className = 'close';
  323. close.style.cursor = "pointer";
  324. close.style.display = 'inline-block';
  325. close.style.fontSize = 'initial';
  326. close.style.verticalAlign = 'bottom';
  327.  
  328. close.addEventListener('click', () => {
  329. const settingnodeDiv = document.getElementById("Lists");
  330. settingnodeDiv.style.display = 'none';
  331. listsShow = false;
  332.  
  333. });
  334. close.addEventListener('mouseover', () => {
  335. close.style.color = 'red';
  336. });
  337. close.addEventListener('mouseout', () => {
  338. close.style.color = 'black';
  339. });
  340.  
  341. titlenode.appendChild(nameDiv);
  342. titlenode.appendChild(addlist);
  343.  
  344. titlenode.appendChild(inputSpan);
  345. titlenode.appendChild(outputSpan);
  346.  
  347. titlenode.appendChild(close);
  348. nodeDiv.appendChild(titlenode);
  349.  
  350. const blankLast = document.createElement('div');
  351. blankLast.setAttribute('style', '' + 'height: 7px;' + '');
  352. nodeDiv.appendChild(blankLast);
  353.  
  354.  
  355. var newEle = {};
  356.  
  357. var newArray = [];
  358. var newinLists = '';
  359.  
  360. allValue = GM_listValues();
  361. allValue.forEach(function (obj, i) {//数组
  362. var newListEle = {};
  363.  
  364. newListEle['name'] = obj;
  365. newListEle['count'] = Object.values(GM_getValue(obj)).length;
  366. newArray.push(newListEle);
  367. });
  368. newArray.sort(compare( "count"));
  369.  
  370. newArray.forEach(function (value, i) {//数组
  371. var listsinfo = document.createElement('div');
  372. listsinfo.style.marginLeft = '18px';
  373. var list = document.createElement('span');
  374. var count = document.createElement('span');
  375. var modify = document.createElement('span');
  376. var del = document.createElement('span');
  377. var note = document.createElement('span');
  378.  
  379. list.innerHTML = value.name;
  380. list.style.width = '80px';
  381. list.style.textAlign = 'left';
  382. list.style.cursor = "pointer";
  383. list.style.display = 'inline-block';
  384. Object.values(GM_getValue(value.name)).forEach(function (value1, index1) {//数组
  385. //console.log(value.fanhao);
  386. if(value1.fanhao == videoFanhao) {
  387. list.style.color = '#48C78E';
  388. list.setAttribute('id', '1');
  389. }
  390. });
  391. var ele = GM_getValue(value.name);
  392. list.addEventListener('click', () => {
  393. if(list.id == 1) {
  394. list.style.color = '#000';
  395. list.setAttribute('id', '0');
  396. Object.values(ele).forEach(function (value2, index2) {
  397. if(videoFanhao == value2.fanhao) {
  398. ele.splice(index2, 1)
  399. GM_setValue(value.name, ele);
  400. listssettings();
  401. showclipboard('移除清单 ' + value.name, 0);
  402.  
  403. newArray.forEach(function (obj, i) {//数组
  404. Object.values(GM_getValue(obj.name)).forEach(function (value, index) {//数组
  405. //console.log(value.fanhao);
  406. if(value.fanhao == videoFanhao) {
  407. if(newinLists == ' ') {
  408. newinLists = obj.name;
  409. } else {
  410. newinLists = newinLists + '  ' + obj.name;
  411. }
  412. }
  413. });
  414. });
  415. console.log(newinLists);
  416. if(videoUrl.indexOf('javdb') > -1) {
  417. document.querySelectorAll('.is-size-7.has-text-grey')[0].innerHTML = origninfo + '   ' + newinLists;
  418. } else if(videoUrl.indexOf('javbus') > -1 || videoUrl.match(/^.*(jav|bus|dmm|see|cdn|fan){2}\..*$/)) {
  419. document.getElementsByClassName('inListBus')[0].innerHTML = newinLists;
  420. } else if(videoUrl.indexOf('javlib') > -1) {
  421. document.getElementsByClassName('favoritetype')[4].innerHTML = newinLists;
  422. }
  423. }
  424. });
  425. listssettings();
  426. } else {
  427. list.setAttribute('id', '1');
  428. newEle['fanhao'] = videoFanhao;
  429. newEle['title'] = videoTitle;
  430. newEle['date'] = videoDate;
  431. newEle['url'] = videoUrl;
  432. newEle['cover'] = videoCover;
  433. newEle['adddate'] = videoaddDate;
  434. ele.push(newEle);
  435. GM_setValue(value.name, ele);
  436. listssettings();
  437. showclipboard('添加至清单 ' + value.name);
  438. console.log('Url ' + videoUrl);
  439. newArray.forEach(function (obj, i) {//数组
  440. Object.values(GM_getValue(obj.name)).forEach(function (value, index) {//数组
  441. //console.log(value.fanhao);
  442. if(value.fanhao == videoFanhao) {
  443. if(newinLists == ' ') {
  444. newinLists = obj.name;
  445. } else {
  446. newinLists = newinLists + '  ' + obj.name;
  447. }
  448. }
  449. });
  450. });
  451. console.log(newinLists);
  452. if(videoUrl.indexOf('javdb') > -1) {
  453. document.querySelectorAll('.is-size-7.has-text-grey')[0].innerHTML = origninfo + '   ' + newinLists;
  454. } else if(videoUrl.indexOf('javbus') > -1 || videoUrl.match(/^.*(jav|bus|dmm|see|cdn|fan){2}\..*$/)) {
  455. document.getElementsByClassName('inListBus')[0].innerHTML = newinLists;
  456. } else if(videoUrl.indexOf('javlib') > -1) {
  457. document.getElementsByClassName('favoritetype')[4].innerHTML = newinLists;
  458. }
  459. }
  460.  
  461. });
  462. count.innerHTML = '(' + value.count + ')';
  463. count.className = 'count';
  464. count.style.width = '55px';
  465. count.style.textAlign = 'left';
  466. count.style.cursor = "pointer";
  467. count.style.display = 'inline-block';
  468. count.addEventListener('click', () => {
  469. var data = [];
  470. data = GM_getValue(value.name);
  471. data.sort(compare1("fanhao",0, 0));
  472. showList(data, value.name, value.count, 1);
  473. });
  474.  
  475. modify.innerHTML = '修改';
  476. modify.style.width = '35px';
  477. modify.style.textAlign = 'left';
  478. modify.style.cursor = "pointer";
  479. modify.style.display = 'inline-block';
  480. modify.style.color = 'white';
  481. modify.addEventListener('click', () => {
  482. var newobj = prompt('修改 ' + value.name, value.name);
  483. let newele = [];
  484. var arr = GM_getValue(value.name);
  485. newele = arr;
  486. if(newobj && newobj != value.name) {
  487. GM_deleteValue(value.name);
  488. GM_setValue(newobj, newele);
  489. showclipboard('修改清单 ' + value.name + '为 ' + newobj, 1);
  490.  
  491. listssettings();
  492. } else {
  493. showclipboard('修改失败', 0);
  494. }
  495. });
  496. modify.addEventListener('mouseover', () => {
  497. modify.style.color = 'blue';
  498. });
  499. modify.addEventListener('mouseout', () => {
  500. modify.style.color = 'white';
  501. });
  502.  
  503. del.innerHTML = '删除';
  504. del.style.width = '35px';
  505. del.style.textAlign = 'left';
  506. del.style.cursor = "pointer";
  507. del.style.display = 'inline-block';
  508. del.style.color = 'white';
  509. del.addEventListener('click', () => {
  510. var arr = GM_getValue(value.name);
  511. if(arr.length == 0) {
  512. var result = confirm("是否确认删除清单 " + value.name);
  513. if (result) {
  514. GM_deleteValue(value.name);
  515. showclipboard('删除清单 ' + value.name, 0);
  516. listssettings();
  517. }
  518. } else {
  519. showclipboard('清单番号页面数量不为零,无法删除', 1);
  520.  
  521. }
  522. });
  523. del.addEventListener('mouseover', () => {
  524. del.style.color = 'red';
  525. });
  526. del.addEventListener('mouseout', () => {
  527. del.style.color = 'white';
  528. });
  529.  
  530. note.innerHTML = '备注';
  531. note.style.width = '35px';
  532. note.style.textAlign = 'left';
  533. note.style.cursor = "pointer";
  534. note.style.display = 'inline-block';
  535. note.style.color = 'white';
  536. note.addEventListener('click', () => {
  537.  
  538. });
  539. note.addEventListener('mouseover', () => {
  540. note.style.color = 'green';
  541. });
  542. note.addEventListener('mouseout', () => {
  543. note.style.color = 'white';
  544. });
  545.  
  546. listsinfo.appendChild(list);
  547. listsinfo.appendChild(count);
  548. listsinfo.appendChild(modify);
  549. listsinfo.appendChild(del);
  550. listsinfo.appendChild(note);
  551. nodeDiv.appendChild(listsinfo);
  552. });
  553.  
  554. nodeDiv.appendChild(blankLast);
  555.  
  556. }
  557.  
  558. var mouseFlag = false;
  559. var mouseNode = document.getElementById('Lists');
  560. mouseNode.onmouseenter = function(e){
  561. mouseFlag = true;
  562. console.log("ismouseenter");
  563. }
  564.  
  565. mouseNode.onmouseleave = function(){
  566. mouseFlag = false;
  567. console.log("ismouseleave");
  568. }
  569. document.addEventListener('click', () => {
  570. if(listsShow && !mouseFlag) {
  571. const settingnodeDiv = document.getElementById("Lists");
  572. settingnodeDiv.style.display = 'none';
  573. listsShow = false;
  574. }
  575. });
  576.  
  577. function compare( propertyName) {
  578. return function( object1, object2) {
  579. var value1 = object1[propertyName];
  580. var value2 = object2[propertyName];
  581. if(value1 < value2) {
  582. return 1;
  583. } else if(value1 > value2) {
  584. return - 1;
  585. } else {
  586. return 0;
  587. }
  588. }
  589. }
  590.  
  591. function compare1(propertyName, m, n) {//番号排序逆序
  592. return function( object1, object2) {
  593. var value1;
  594. var value2;
  595. if(m == 0) {
  596. value1 = object1[propertyName];
  597. value2 = object2[propertyName];
  598. } else if(m == 1) {
  599. value1 = new Date(object1[propertyName]);
  600. value2 = new Date(object2[propertyName]);
  601. value1 = value1.getTime();
  602. value2 = value2.getTime();
  603. }
  604. if(n == 0) {//0顺序1逆序
  605. if(value1 > value2) {
  606. return 1;
  607. } else if(value1 < value2) {
  608. return - 1;
  609. } else {
  610. return 0;
  611. }
  612. } else if(n == 1) {
  613. if(value1 < value2) {
  614. return 1;
  615. } else if(value1 > value2) {
  616. return - 1;
  617. } else {
  618. return 0;
  619. }
  620. }
  621. }
  622. }
  623.  
  624. var wrapEle = document.createElement('div');
  625. wrapEle.id = "wrap";
  626. wrapEle.setAttribute('style', '' +
  627. 'position:fixed;' +
  628. 'right:0px;' +
  629. 'top:0px;' +
  630. 'width:300px;' +//最大宽度
  631. 'background-color:rgba(255,255,255,0)!important;' +
  632. 'z-index:2147483647!important;' +//显示最顶层
  633. '');
  634.  
  635. document.documentElement.appendChild(wrapEle);//元素加入body
  636.  
  637. function showclipboard(text, c) {
  638. const wrapDiv = document.getElementById("wrap");
  639. var div = document.createElement('div');
  640. if(c == 0) {
  641. div.setAttribute('style', '' +
  642. 'display:none!important;' +//去掉直接显示
  643. 'left:0px;' +
  644. 'top:0px;' +
  645. 'margin-left:auto;' +//table块靠右显示
  646. 'font-size:13px!important;' +
  647. 'overflow:auto!important;' +
  648. 'background-color:rgba(255,99,71,0.5)!important;' +
  649. 'font-family:sans-serif,Arial!important;' +
  650. 'font-weight:normal!important;' +
  651. 'font-color:rgba(255,255,255,1)!important;' +
  652. 'text-align:left!important;' +//左对齐
  653. 'color:#fff!important;' +//字体颜色白
  654. 'border-radius:3px!important;' +
  655. 'border: 1px solid rgb(10 10 10 / 10%) !important;'+
  656. 'max-height:1216px!important;' +
  657. 'z-index:2147483647!important;' +
  658. '');
  659. } else if(c == 1) {
  660. div.setAttribute('style', '' +
  661. 'display:none!important;' +//去掉直接显示
  662. 'left:0px;' +
  663. 'top:0px;' +
  664. 'margin-left:auto;' +//table块靠右显示
  665. 'font-size:13px!important;' +
  666. 'overflow:auto!important;' +
  667. 'background-color:rgba(8,46,84,0.6)!important;' +
  668. 'font-family:sans-serif,Arial!important;' +
  669. 'font-weight:normal!important;' +
  670. 'text-align:left!important;' +//左对齐
  671. 'color:#fff!important;' +
  672. 'border-radius:3px!important;' +
  673. 'border: 1px solid rgb(10 10 10 / 10%) !important;'+
  674. 'max-height:1216px!important;' +
  675. 'z-index:2147483647!important;' +
  676. '');
  677. } else {
  678. div.setAttribute('style', '' +
  679. 'display:none!important;' +//去掉直接显示
  680. 'left:0px;' +
  681. 'top:0px;' +
  682. 'margin-left:auto;' +//table块靠右显示
  683. 'font-size:13px!important;' +
  684. 'overflow:auto!important;' +
  685. 'background-color:rgba(255,255,255,0.7)!important;' +
  686. 'font-family:sans-serif,Arial!important;' +
  687. 'font-weight:normal!important;' +
  688. 'text-align:left!important;' +//左对齐
  689. 'color:#000!important;' +
  690. 'border-radius:3px!important;' +
  691. 'border: 1px solid rgb(10 10 10 / 10%) !important;'+
  692. 'max-height:1216px!important;' +
  693. 'z-index:2147483647!important;' +
  694. '');
  695. }
  696.  
  697. div.innerHTML = text;
  698. div.style.display = 'table';// 换行显示结果
  699. let fc = wrapDiv.firstElementChild
  700. if (fc) {
  701. wrapDiv.insertBefore(div,fc)
  702. } else {
  703. wrapDiv.appendChild(div);
  704. }
  705. setTimeout(() => {
  706. div.parentNode.removeChild(div);
  707. },6000)
  708.  
  709. }
  710. document.addEventListener('keydown',function(event) {
  711.  
  712. var keynum;
  713. if(window.event) // IE
  714. keynum = event.keyCode;
  715. else if(event.which) // Netscape/Firefox/Opera
  716. keynum = event.which;
  717.  
  718. if (event.key === 'Escape') {
  719. const settingnodeDiv = document.getElementById("Lists");
  720. settingnodeDiv.style.display = 'none';
  721. listsShow = false;
  722. document.getElementById("listpage").style.display = 'none';
  723. }
  724. });
  725.  
  726.  
  727. var showList = function(data, listname, n, s) {
  728.  
  729. document.getElementById("Lists").style.display = 'none';
  730. listsShow = false;
  731.  
  732. var nodeEle1 = document.createElement('div');
  733. nodeEle1.id = "listpage";
  734.  
  735. document.documentElement.appendChild(nodeEle1);//元素加入body
  736.  
  737. var newwid = (window.screen.width - 890)/2;
  738. var newhei = (window.screen.height - 860)/2;
  739. const newnodeDiv = document.getElementById("listpage");
  740. newnodeDiv.innerHTML = '';
  741.  
  742. newnodeDiv.setAttribute('style', '' +
  743. 'position:fixed;' +
  744. 'left:' + newwid + 'px;' +
  745. 'top:'+ newhei + 'px;' +
  746. 'width:905px;' +//最大宽度
  747. 'height:715px;' +//最大高度
  748. 'overflow:auto;' +
  749. 'font-size:14px!important;' +
  750. 'border-radius:5px!important;' +
  751. 'border:1px solid #a9a9a9!important;' +
  752. 'background-color:#fff!important;' +
  753. 'z-index:2147483647!important;' +//显示最顶层
  754. '');
  755.  
  756. var div0 = document.createElement('div');
  757. var divl = document.createElement('span');
  758. var download = document.createElement('span');
  759. var downloadtxt = document.createElement('span');
  760. //var downxls = document.createElement('span');
  761. var downloadjson = document.createElement('span');
  762.  
  763. var sort = document.createElement('span');
  764. var sortfanhao = document.createElement('span');
  765. var sorttimerorder = document.createElement('span');
  766. var sorttimerreversedorder = document.createElement('span');
  767. var sortaddtimerorder = document.createElement('span');
  768. var sortaddtimerreversedorder = document.createElement('span');
  769.  
  770. var divc = document.createElement('span');
  771.  
  772. var stri = '';
  773. var queryi = [];
  774.  
  775. divl.innerText = listname + ' (' + n + ')';
  776. divl.style.width = "180px";
  777. divl.style.paddingLeft = "6px";
  778. divl.style.display = 'inline-block';
  779.  
  780. download.innerHTML = '下载';
  781. download.style.color = '#000';
  782. download.style.marginRight = '10px';
  783.  
  784. downloadtxt.innerHTML = 'TXT';
  785. downloadtxt.style.color = '#d1d1d1';
  786. downloadtxt.style.marginRight = '10px';
  787. downloadtxt.style.cursor = "pointer";
  788. downloadtxt.addEventListener('click', () => {
  789. GM_getValue(listname).forEach(function (value, i) {//数组
  790. queryi.push(value.fanhao + ',' + value.title.trim());
  791. });
  792. queryi.sort();
  793. for(var i=0;i<queryi.length;i++) {
  794. stri = stri + queryi[i] + '\n';
  795. }
  796. var downLinki = document.createElement('a');
  797. downLinki.download = listname;
  798. //字符内容转换为blod地址
  799. var blobi = new Blob([stri]);
  800. downLinki.href = URL.createObjectURL(blobi);
  801. // 链接插入到页面
  802. document.body.appendChild(downLinki);
  803. downLinki.click();
  804. // 移除下载链接
  805. document.body.removeChild(downLinki);
  806.  
  807. showclipboard('已下载TXT');
  808. });
  809. downloadtxt.addEventListener('mouseover', () => {
  810. downloadtxt.style.color = 'black';
  811. });
  812. downloadtxt.addEventListener('mouseout', () => {
  813. downloadtxt.style.color = '#d1d1d1';
  814. });
  815.  
  816. downloadjson.innerHTML = 'JSON';
  817. downloadjson.style.color = '#d1d1d1';
  818. downloadjson.style.marginRight = '10px';
  819. downloadjson.style.cursor = "pointer";
  820. downloadjson.addEventListener('click', () => {
  821. var javLists = {};
  822. javLists[listname] = GM_getValue(listname);
  823.  
  824. var blob = new Blob([JSON.stringify(javLists)], {type:"application/json;charset=utf-8"}); //json
  825. var url = URL.createObjectURL(blob);
  826. var elem = document.createElement("a");
  827. elem.href = url;
  828. elem.download = 'javList-Backup-' + timetext;
  829. document.body.appendChild(elem);
  830. elem.click();
  831. document.body.removeChild(elem);
  832.  
  833. showclipboard('已下载JSON');
  834. });
  835. downloadjson.addEventListener('mouseover', () => {
  836. downloadjson.style.color = 'black';
  837. });
  838. downloadjson.addEventListener('mouseout', () => {
  839. downloadjson.style.color = '#d1d1d1';
  840. });
  841.  
  842. sort.innerHTML = '排序';
  843. sort.style.color = '#000';
  844. sort.style.marginRight = '10px';
  845.  
  846. sortfanhao.innerHTML = '番号顺序';
  847. if(s == 1)
  848. sortfanhao.style.color = '#d1d1d1';
  849. else
  850. sortfanhao.style.color = '#000';
  851. sortfanhao.style.marginRight = '10px';
  852. sortfanhao.style.cursor = "pointer";
  853. sortfanhao.addEventListener('click', () => {
  854. var data = [];
  855. data = GM_getValue(listname);
  856. data.sort(compare1("fanhao",0, 0));
  857. showList(data, listname, n, 1);
  858. });
  859.  
  860. sorttimerorder.innerHTML = '时间顺序';
  861. if(s == 2)
  862. sorttimerorder.style.color = '#d1d1d1';
  863. else
  864. sorttimerorder.style.color = '#000';
  865. sorttimerorder.style.marginRight = '10px';
  866. sorttimerorder.style.cursor = "pointer";
  867. sorttimerorder.addEventListener('click', () => {
  868. var data = [];
  869. data = GM_getValue(listname);
  870. data.sort(compare1("date",1, 0));
  871. showList(data, listname, n, 2);
  872. });
  873.  
  874. sorttimerreversedorder.innerHTML = '时间逆序';
  875. if(s == 3)
  876. sorttimerreversedorder.style.color = '#d1d1d1';
  877. else
  878. sorttimerreversedorder.style.color = '#000';
  879. sorttimerreversedorder.style.marginRight = '10px';
  880. sorttimerreversedorder.style.cursor = "pointer";
  881. sorttimerreversedorder.addEventListener('click', () => {
  882. var data = [];
  883. data = GM_getValue(listname);
  884. data.sort(compare1("date",1, 1));
  885. showList(data, listname, n, 3);
  886. });
  887.  
  888. sortaddtimerorder.innerHTML = '添加顺序';
  889. if(s == 4)
  890. sortaddtimerorder.style.color = '#d1d1d1';
  891. else
  892. sortaddtimerorder.style.color = '#000';
  893. sortaddtimerorder.style.marginRight = '10px';
  894. sortaddtimerorder.style.cursor = "pointer";
  895. sortaddtimerorder.addEventListener('click', () => {
  896. var data = [];
  897. data = GM_getValue(listname);
  898. data.sort(compare1("adddate",1, 0));
  899. showList(data, listname, n, 4);
  900. });
  901.  
  902. sortaddtimerreversedorder.innerHTML = '添加逆序';
  903. if(s == 5)
  904. sortaddtimerreversedorder.style.color = '#d1d1d1';
  905. else
  906. sortaddtimerreversedorder.style.color = '#000';
  907. sortaddtimerreversedorder.style.marginRight = '10px';
  908. sortaddtimerreversedorder.style.cursor = "pointer";
  909. sortaddtimerreversedorder.addEventListener('click', () => {
  910. var data = [];
  911. data = GM_getValue(listname);
  912. data.sort(compare1("adddate",1, 1));
  913. showList(data, listname, n, 5);
  914. });
  915.  
  916.  
  917. divc.innerHTML = '×';
  918. divc.title = 'Close';
  919. divc.className = 'close';
  920. divc.style.cursor = "pointer";
  921. divc.style.display = 'inline-block';
  922. divc.style.fontSize = 'initial';
  923. divc.style.verticalAlign = 'bottom';
  924. divc.style.marginLeft = '215px';
  925.  
  926. divc.addEventListener('click', () => {
  927. document.getElementById("listpage").style.display = 'none';
  928. });
  929. divc.addEventListener('mouseover', () => {
  930. divc.style.color = 'red';
  931. });
  932. divc.addEventListener('mouseout', () => {
  933. divc.style.color = 'black';
  934. });
  935.  
  936. div0.appendChild(divl);
  937. div0.appendChild(download);
  938. div0.appendChild(downloadtxt);
  939. div0.appendChild(downloadjson);
  940. div0.appendChild(sort);
  941. div0.appendChild(sortfanhao);
  942. div0.appendChild(sorttimerorder);
  943. div0.appendChild(sorttimerreversedorder);
  944. div0.appendChild(sortaddtimerorder);
  945. div0.appendChild(sortaddtimerreversedorder);
  946. div0.appendChild(divc);
  947.  
  948. newnodeDiv.appendChild(div0);
  949.  
  950. var newDiv = document.createElement('div');
  951. newDiv.id = "List";
  952. newDiv.style.paddingLeft = "6px";
  953. newDiv.style.width = '890px';
  954. newDiv.style.display = 'flex';
  955. newDiv.style.flexWrap = 'wrap';
  956. newDiv.style.justifyContent = 'flex-start';
  957. newnodeDiv.appendChild(newDiv);
  958. let div = document.getElementById("List"),
  959.  
  960. currentPage = 1,
  961. pageCount = 12,
  962. list = null,
  963. li = null;
  964.  
  965. function paginationByJS(data, div, currentPage, pageCount, list, li) {
  966. //拿到我们的总页码
  967. function getTotalPage(data, pageCount){
  968. if (Math.ceil(data.length / pageCount) < 0) return console.error('getTotalPage 出现问题');
  969. return Math.ceil(data.length / pageCount);
  970. }
  971.  
  972. //每次都能够返回 一个包含要取到数据的索引
  973. function getArrIndex(currentPage, data, totalPge, pageCount){
  974. let begin, end;
  975. if (!currentPage > 0 && !data.length && !totalPge > 0 && !pageCount > 0) {
  976. return console.error('您传入的参数有误');
  977. }
  978. //当前页在头尾的情况
  979. if (currentPage === 1) {
  980. return (totalPge === 1)? {
  981. begin: 0,
  982. end: data.length - 1
  983. } : {
  984. begin: 0,
  985. end: pageCount -1
  986. }
  987. }
  988. if (currentPage === totalPge){
  989. begin = ((currentPage -1) * pageCount);
  990. end = data.length -1;
  991. return {
  992. begin, end
  993. }
  994. }
  995. //在中间的情况
  996. if (currentPage > 1 && currentPage < totalPge){
  997. begin = (currentPage - 1) * pageCount;
  998. end = currentPage * pageCount -1;
  999. return { begin, end };
  1000. }
  1001. }
  1002.  
  1003. //增删类名修改
  1004. function isActive(){
  1005. //拿到目前正在作用active的元素 并且获取他的innerText
  1006. let activeBtn = document.getElementsByClassName('active')[0],
  1007. oldActiveIndex = activeBtn? parseInt(activeBtn.innerText) : null;
  1008.  
  1009.  
  1010.  
  1011. //如果两次点击同一个按钮则不做操作
  1012. if (oldActiveIndex === currentPage){ return; }
  1013.  
  1014. //若按钮存在 么此先做一个删除
  1015. if (activeBtn){ activeBtn.classList.remove('active'); }
  1016.  
  1017. list = Array.from(document.getElementsByTagName('li'));
  1018.  
  1019. //遍历添加
  1020. (list.find(i=> parseInt(i.innerText) === currentPage)).classList.add('active');
  1021.  
  1022. var eleli = document.getElementsByTagName('li');
  1023. //console.log(eleli)
  1024. if(eleli) {
  1025. Object.values(eleli).forEach(function (value, index) {//数组
  1026. value.addEventListener('mouseover', () => {
  1027. value.style.border = '1px solid #d1d1d1';
  1028. value.style.padding = '4px';
  1029. });
  1030. value.addEventListener('mouseout', () => {
  1031. value.style.border = '0px solid #d1d1d1';
  1032. value.style.padding = '5px';
  1033. });
  1034. // console.log(value.className)
  1035. if(value.className == 'active') {
  1036. value.style.background = '#CCE8FF';
  1037. } else {
  1038. value.style.background = '#FFF';
  1039. }
  1040. });
  1041. }
  1042. }
  1043.  
  1044.  
  1045. //返回渲染数组
  1046. function getRenderList(){
  1047. let temp = getArrIndex(currentPage, data, getTotalPage(data, pageCount), pageCount);
  1048. return data.slice(temp.begin, temp.end + 1); //slice方法取头不拿尾
  1049. }
  1050.  
  1051. //第一次创造列表数据
  1052. function createBtn(totalPage){
  1053. //let ul = document.getElementsByTagName('ul')[0];
  1054. var newUl = document.createElement('ul');
  1055. newUl.id = "ul-list";
  1056. newUl.setAttribute('style', '' +
  1057. 'padding: 0;' +
  1058. 'position: relative;' +
  1059. 'top: 10px;' +
  1060. //'left: 38%;' +
  1061. 'overflow: hidden;' +
  1062. 'list-style: none;' +
  1063. 'border: 0px solid #c1c1c1;' +
  1064. 'display: inline-block;' +
  1065. 'margin-top: 5px;' +
  1066. 'height: 30px;' +
  1067. '');
  1068. if(getTotalPage(data, pageCount) < 3) {
  1069. newUl.style.left = '45%';
  1070. } else if(getTotalPage(data, pageCount) > 3 && getTotalPage(data, pageCount) < 6) {
  1071. newUl.style.left = '42%';
  1072. } else if(getTotalPage(data, pageCount) > 6 && getTotalPage(data, pageCount) < 8) {
  1073. newUl.style.left = '40%';
  1074. } else {
  1075. newUl.style.left = '38%';
  1076. }
  1077. newnodeDiv.appendChild(newUl);
  1078. const ul = document.getElementById("ul-list");
  1079. //每次都至少显示五个 当前 当前的前2个 当前的后2个
  1080. for (let i =1; i<=totalPage; i++){
  1081. //开头
  1082. if (i === 1){
  1083. li = document.createElement('li');
  1084. li.setAttribute('style', '' +
  1085. 'float: left;' +
  1086. 'padding: 5px;' +
  1087. 'color: #273346;' +
  1088. 'font-size: 15px;' +
  1089. 'cursor: pointer;' +
  1090. '');
  1091. li.innerText = '<';
  1092. ul.appendChild(li);
  1093. }
  1094. //拿到页码按钮集合
  1095. li = document.createElement('li');
  1096. li.setAttribute('style', '' +
  1097. 'float: left;' +
  1098. 'padding: 5px;' +
  1099. 'color: #273346;' +
  1100. 'font-size: 15px;' +
  1101. 'cursor: pointer;' +
  1102. '');
  1103. li.innerText = i;
  1104.  
  1105. //保证至少页码为8的时候才出现省略号
  1106. if(i > 6 && totalPage > 7){
  1107. li.innerText = '...';
  1108. ul.appendChild(li);
  1109. li = document.createElement('li');
  1110. li.setAttribute('style', '' +
  1111. 'float: left;' +
  1112. 'padding: 5px;' +
  1113. 'color: #273346;' +
  1114. 'font-size: 15px;' +
  1115. 'cursor: pointer;' +
  1116. '');
  1117. li.innerText = totalPage;
  1118. ul.appendChild(li);
  1119. li = document.createElement('li');
  1120. li.setAttribute('style', '' +
  1121. 'float: left;' +
  1122. 'padding: 5px;' +
  1123. 'color: #273346;' +
  1124. 'font-size: 15px;' +
  1125. 'cursor: pointer;' +
  1126. '');
  1127. li.innerText = '>';
  1128. ul.appendChild(li);
  1129. break;
  1130. }
  1131. ul.appendChild(li);
  1132. //到头了您
  1133. if (i === totalPage){
  1134. li = document.createElement('li');
  1135. li.setAttribute('style', '' +
  1136. 'float: left;' +
  1137. 'padding: 5px;' +
  1138. 'color: #273346;' +
  1139. 'font-size: 15px;' +
  1140. 'cursor: pointer;' +
  1141. '');
  1142. li.innerText = '>';
  1143. ul.appendChild(li);
  1144. }
  1145. }
  1146. }
  1147.  
  1148.  
  1149. function btnControl(totalPage, currentPage) {
  1150. //小于7 就直接全部排出来就ok 不用搞这些花里胡哨的
  1151. if (totalPage < 8)return;
  1152.  
  1153. let li,
  1154. before = currentPage - 2, //头
  1155. after = currentPage + 2, //尾巴
  1156. list = document.getElementsByTagName('li'), //数据列表
  1157. arr = Array.from(list).filter((i)=>{ //实际页码改变的按钮
  1158. var index = parseInt(i.innerText);
  1159. return (index !== 1 && index !== totalPage && index.toString() !== 'NaN');
  1160. }),
  1161. headFlag = list[2],
  1162. endFlag = list[list.length - 3];
  1163.  
  1164. //控制插入 '...'
  1165. // if (currentPage > 4 && headFlag.innerText !== '...'){
  1166. // li = document.createElement('li');
  1167. // li.setAttribute('style', '' +
  1168. // 'float: left;' +
  1169. // 'padding: 5px;' +
  1170. // 'color: #273346;' +
  1171. // 'font-size: 15px;' +
  1172. // 'cursor: pointer;' +
  1173. // '');
  1174. // li.innerText = '...';
  1175. // list[0].parentElement.insertBefore(li, headFlag);
  1176. // }
  1177. // if ((currentPage > 1) && endFlag.innerText !== '...'){
  1178. // li = document.createElement('li');
  1179. // li.setAttribute('style', '' +
  1180. // 'float: left;' +
  1181. // 'padding: 5px;' +
  1182. // 'color: #273346;' +
  1183. // 'font-size: 15px;' +
  1184. // 'cursor: pointer;' +
  1185. // '');
  1186. // li.innerText = '...';
  1187. // list[0].parentElement.insertBefore(li, list[list.length - 2]); //加入之前的所以是 list.length-2
  1188. // }
  1189.  
  1190. //控制删除 '...'
  1191. if (currentPage < 5 && headFlag.innerText === '...'){
  1192. headFlag.parentNode.removeChild(headFlag);
  1193. }
  1194. if (after + 1 >= totalPage && endFlag.innerText === '...'){
  1195. endFlag.parentNode.removeChild(endFlag);
  1196. }
  1197.  
  1198.  
  1199. //关键的控制 基于他们展示时当前页 和 头尾 在边界位置以及普通位置的情况来做考虑
  1200. //在中间的时候 以currentPage为中心 前后2格
  1201. if (before > 1 && after < totalPage){
  1202. for (let i = currentPage - 2, j = 0; i <= currentPage + 2; i++, j++){
  1203. arr[j].innerText = i;
  1204. }
  1205. }
  1206.  
  1207. //头碰到边界了 说明要从2开始 这个currentPage是3了
  1208. if (before === 1){
  1209. for (let i = currentPage - 1, j = 0; i <= currentPage + 3; i++, j++){
  1210. arr[j].innerText = i;
  1211. }
  1212. }
  1213.  
  1214. //尾巴碰到边界了 说明要从currentPage回头数三个开始,不然会生成一个和totalPage相同的page,就是bug了。
  1215. if (after === totalPage){
  1216. for (let i = currentPage - 3, j = 0; i < currentPage + 2; i++, j++){
  1217. arr[j].innerText = i;
  1218. }
  1219. }
  1220.  
  1221. //当前页首尾~同上
  1222. if (currentPage === 1){
  1223. for (let i = currentPage + 1, j = 0; i <= arr.length + 1; i++, j++){
  1224. arr[j].innerText = i;
  1225. }
  1226.  
  1227. }
  1228. if (currentPage === totalPage){
  1229. for (let i = currentPage - arr.length, j = 0; i < totalPage; i++, j++){
  1230. arr[j].innerText = i;
  1231. }
  1232. }
  1233. }
  1234.  
  1235. window.setTimeout(function(){
  1236.  
  1237. var eleli = document.getElementsByTagName('li');
  1238. //console.log(eleli)
  1239. if(eleli) {
  1240. Object.values(eleli).forEach(function (value, index) {//数组
  1241. value.addEventListener('mouseover', () => {
  1242. value.style.border = '1px solid #d1d1d1';
  1243. value.style.padding = '4px';
  1244. });
  1245. value.addEventListener('mouseout', () => {
  1246. value.style.border = '0px solid #d1d1d1';
  1247. value.style.padding = '5px';
  1248. });
  1249. // console.log(value.className)
  1250. if(value.className == 'active') {
  1251. value.style.background = '#CCE8FF';
  1252. }
  1253. });
  1254. }
  1255. }, 100);
  1256. function arrowControl(target, totalPage){
  1257. let event = target || window.event;
  1258. if (event) {
  1259. target = event.target;
  1260. }
  1261.  
  1262. if (target) {
  1263. switch (target.innerText){
  1264. case '<': currentPage = currentPage === 1? 1 : currentPage - 1;break;
  1265. case '>': currentPage = currentPage === totalPage? totalPage : currentPage + 1; break;
  1266. case '...': break;
  1267. default: currentPage = parseInt(target.innerText);
  1268. }
  1269. }
  1270. }
  1271.  
  1272. function displayData() {
  1273. let arr = getRenderList(), p;//最后得到的数据
  1274. div.innerHTML = ''; //重置div内容区域
  1275. arr.forEach(i =>{
  1276. //p = document.createElement('p');
  1277. var div1 = document.createElement('div');
  1278. var linkimg1 = document.createElement('a');
  1279. var img1 = document.createElement('img');
  1280. var s1 = document.createElement('div');
  1281. var s2 = document.createElement('div');
  1282. var t1 = document.createElement('span');
  1283. var t2 = document.createElement('span');
  1284. var delfanhao = document.createElement('div');
  1285. div1.style.border = '3px solid #fff';
  1286. linkimg1.href = i.url;
  1287. linkimg1.onclick = function(){
  1288. GM_openInTab(i.url, {
  1289. active: false
  1290. });
  1291. return false;
  1292. }
  1293. img1.src = i.cover;
  1294. img1.style.width = '215px';
  1295. s1.innerText = i.fanhao;
  1296. t1.innerText = i.date;
  1297. t1.style.fontSize = '10px';
  1298. t2.innerText = i.adddate;
  1299. t2.style.fontSize = '10px';
  1300. t2.style.marginLeft = '60px';
  1301.  
  1302. delfanhao.innerHTML = '删除';
  1303. delfanhao.title = '删除';
  1304. delfanhao.className = '删除';
  1305. delfanhao.style.cursor = "pointer";
  1306. delfanhao.style.fontSize = '13px';
  1307. delfanhao.style.textAlign = 'center';
  1308.  
  1309.  
  1310. delfanhao.addEventListener('click', () => {
  1311. var ele = GM_getValue(listname);
  1312. delfanhao.parentNode.remove();
  1313. var result1 = confirm("是否确认删除清单 " + listname);
  1314. if (result1) {
  1315. Object.values(ele).forEach(function (value, index) {
  1316. if(i.fanhao == value.fanhao) {
  1317. ele.splice(index, 1)
  1318. GM_setValue(listname, ele);
  1319. showclipboard('移除清单 ' + listname, 0);
  1320.  
  1321. }
  1322. });
  1323. }
  1324. });
  1325. delfanhao.addEventListener('mouseover', () => {
  1326. delfanhao.style.color = 'red';
  1327. });
  1328. delfanhao.addEventListener('mouseout', () => {
  1329. delfanhao.style.color = 'black';
  1330. });
  1331.  
  1332. linkimg1.appendChild(img1);
  1333. div1.appendChild(linkimg1);
  1334. div1.appendChild(s1);
  1335. s2.appendChild(t1);
  1336. s2.appendChild(t2);
  1337. div1.appendChild(s2);
  1338. div1.appendChild(delfanhao);
  1339. div.appendChild(div1);
  1340. }); //展示一下
  1341. }
  1342.  
  1343. //这个是事件的监听函数
  1344. function pagination(target){
  1345. let totalPage = getTotalPage(data, pageCount);
  1346. //兼容拿到事件
  1347. arrowControl(target, totalPage);
  1348. btnControl(totalPage, parseInt(currentPage));
  1349. isActive();
  1350. displayData();
  1351. }
  1352.  
  1353. //首次注册生成第一页数据和分页栏
  1354. function firstInit() {
  1355. createBtn(parseInt(getTotalPage(data, pageCount)));
  1356. isActive();
  1357. displayData();
  1358. }
  1359. //window.onload = function () {
  1360. firstInit();
  1361. Array.from(document.getElementsByTagName('li')).forEach(i => i.onclick = function (e) {
  1362. pagination(e)
  1363. });
  1364. //}
  1365. }
  1366.  
  1367.  
  1368.  
  1369. paginationByJS(data, div, currentPage, pageCount, list, li);
  1370. }
  1371.  
  1372. })();