1let bookmax = 30; 2 3function LastRead() { 4 this.bookList = "bookList" 5} 6 7LastRead.prototype = { 8 set: function (bid, url, bookname, chaptername, author, readtime, cover) { 9 if (!(bid && url && bookname && chaptername && author && readtime)) return; 10 var v = bid + '#' + url + '#' + bookname + '#' + chaptername + '#' + author + '#' + readtime + '#' + cover; 11 var aBooks = lastread.getBook(); 12 var aBid = []; 13 for (i = 0; i < aBooks.length; i++) { 14 aBid.push(aBooks[i][0]) 15 } 16 if ($.inArray(bid, aBid) != -1) { 17 lastread.remove(bid) 18 } else { 19 while (aBooks.length >= bookmax) { 20 lastread.remove(aBooks[0][0]); 21 aBooks = lastread.getBook() 22 } 23 } 24 this.setItem(bid, v); 25 this.setBook(bid) 26 }, get: function (k) { 27 return this.getItem(k) ? this.getItem(k).split("#") : "" 28 }, remove: function (k) { 29 this.removeItem(k); 30 this.removeBook(k) 31 }, setBook: function (v) { 32 var reg = new RegExp("(^|#)" + v); 33 var books = this.getItem(this.bookList); 34 if (books === "") { 35 books = v 36 } else { 37 if (books.search(reg) === -1) { 38 books += "#" + v 39 } else { 40 books.replace(reg, "#" + v) 41 } 42 } 43 this.setItem(this.bookList, books) 44 }, getBook: function () { 45 var v = this.getItem(this.bookList) ? this.getItem(this.bookList).split("#") : Array(); 46 var books = Array(); 47 if (v.length) { 48 for (var i = 0; i < v.length; i++) { 49 var tem = this.getItem(v[i]).split('#'); 50 if (tem.length > 3) books.push(tem) 51 } 52 } 53 return books 54 }, removeBook: function (v) { 55 var reg = new RegExp("(^|#)" + v); 56 var books = this.getItem(this.bookList); 57 if (!books) { 58 books = "" 59 } else { 60 if (books.search(reg) != -1) { 61 books = books.replace(reg, "") 62 } 63 } 64 this.setItem(this.bookList, books) 65 }, setItem: function (k, v) { 66 if (!!window.localStorage) { 67 localStorage.setItem(k, v) 68 } else { 69 var expireDate = new Date(); 70 var EXPIR_MONTH = 30 * 24 * 3600 * 1000; 71 expireDate.setTime(expireDate.getTime() + 12 * EXPIR_MONTH); 72 document.cookie = k + "=" + encodeURIComponent(v) + ";expires=" + expireDate.toGMTString() + "; path=/" 73 } 74 }, getItem: function (k) { 75 var value = ""; 76 var result = ""; 77 if (!!window.localStorage) { 78 result = window.localStorage.getItem(k); 79 value = result || "" 80 } else { 81 reg = new RegExp("(^| )" + k + "=([^;]*)(;|\x24)"); 82 result = reg.exec(document.cookie); 83 if (result) { 84 value = decodeURIComponent(result[2]) || "" 85 } 86 } 87 return value 88 }, removeItem: function (k) { 89 if (!!window.localStorage) { 90 window.localStorage.removeItem(k) 91 } else { 92 var expireDate = new Date(); 93 expireDate.setTime(expireDate.getTime() - 1000); 94 document.cookie = k + "= " + ";expires=" + expireDate.toGMTString() 95 } 96 }, removeAll: function () { 97 if (!!window.localStorage) { 98 window.localStorage.clear() 99 } else { 100 var v = this.getItem(this.bookList) ? this.getItem(this.bookList).split("#") : Array(); 101 var books = Array(); 102 if (v.length) { 103 for (var i in v) { 104 var tem = this.removeItem(v[k]) 105 } 106 } 107 this.removeItem(this.bookList) 108 } 109 } 110}; 111 112function removebook(k) { 113 lastread.remove(k); 114 location.reload() 115} 116 117function removeall() { 118 lastread.removeAll(); 119 location.reload() 120} 121 122function showtempbooks() { 123 var books = lastread.getBook().reverse(); 124 let bookhtml = ''; 125 if (books.length) { 126 for (var i = 0; i < books.length; i++) { 127 if (i < bookmax) { 128 bookhtml += '<dl><a href="' + books[i][1] + '" class="cover" title="' + books[i][2] + '">
128<img src="' + books[i][6] + '" onerror="src=\'/static/dqg/nocover.jpg\'" alt="' + books[i][2] + '"></a><dt><a href="' + books[i][1] + '" title="' + books[i][2] + '">' + books[i][2] + '</a></dt><dd class="history">已读å°ï¼' + books[i][3] + '</dd><dd class="history">é 读æ¶é´ï¼' + books[i][5] + '</dd><dd><a>' + books[i][4] + '</a><a id="del_temp" href="javascript:removebook(\'' + books[i][0] + '\')">å é¤</a></dd></dl>'; 129 } 130 } 131 } else { 132 bookhtml += '<div class="nobook">没æé 读记å½ã</div>'; 133 } 134 $("#tempBookcase").html(bookhtml); 135} 136 137window.lastread = new LastRead();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.