PageSourceSearch

https://www.teachbilingualca.org/static/dqg/js/tempbookcase.js

js teachbilingualca.org collected 2026-09-29 15:51:32 UTC 5,034 bytes, 137 lines download raw bytes

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.