Merge pull request #136 from Celeter/master

内置的web看书勉强能用了
pull/141/head 3.20.030813
kunfei 5 years ago committed by GitHub
commit 5ee7b2c9d4
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 28
      app/src/main/assets/web/bookshelf.html
  2. 36
      app/src/main/assets/web/bookshelf.js

@ -1,24 +1,27 @@
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>
<head> <head>
<meta charset="utf-8"/> <meta charset="utf-8" />
<title>阅读书架</title> <title>阅读3.0书架</title>
<link href="bookshelf.css" rel="stylesheet"/> <link rel="icon" href="favicon.ico">
<link href="bookshelf.css" rel="stylesheet" />
</head> </head>
<body> <body>
<button id="top" class="top"></button> <button id="top" class="top"></button>
<button id="showchapter" class="showchapter"></button> <button id="showchapter" class="showchapter"></button>
<button id="hidebooks" class="hidebooks"></button> <button id="hidebooks" class="hidebooks"></button>
<div class="nav"> <div class="nav">
<button id="back">返回</button> <button id="back">返回</button>
<button id="type">所有书籍 ▼</button> <button id="type">所有书籍 ▼</button>
<button id="sort">手动排序 ▼</button> <button id="sort">手动排序 ▼</button>
<button id="setting">阅读设置</button> <button id="setting">阅读设置</button>
<input type="text" class="address" id="address" title="阅读APP地址或IP" value=""/> <input type="text" class="address" id="address" title="阅读APP地址或IP" value="" />
<button id="refresh">重新加载</button> <button id="refresh">重新加载</button>
</div> </div>
<div class="allcontent" id="allcontent"> <div class="allcontent" id="allcontent">
<div id="books" class="books"></div> <div id="books" class="books"></div>
<div id="more" class="more"> <div id="more" class="more">
<div id="info" class="info"></div> <div id="info" class="info"></div>
@ -26,7 +29,8 @@
<div id="chapter" class="chapter"></div> <div id="chapter" class="chapter"></div>
<div id="content" class="content"></div> <div id="content" class="content"></div>
</div> </div>
</div> </div>
<script src="bookshelf.js"></script> <script src="bookshelf.js"></script>
</body> </body>
</html> </html>

@ -1,7 +1,7 @@
var $ = document.querySelector.bind(document) var $ = document.querySelector.bind(document)
, $$ = document.querySelectorAll.bind(document) , $$ = document.querySelectorAll.bind(document)
, $c = document.createElement.bind(document) , $c = document.createElement.bind(document)
, randomImg = "http://acg.bakayun.cn/randbg.php?t=dfzh" , randomImg = "http://api.mtyqx.cn/api/random.php"
, randomImg2 = "http://img.xjh.me/random_img.php" , randomImg2 = "http://img.xjh.me/random_img.php"
, books , books
; ;
@ -13,13 +13,13 @@ var formatTime = value => {
}; };
var apiMap = { var apiMap = {
getBookshelf: "/getBookshelf", "getBookshelf": "/getBookshelf",
getChapterList: "/getChapterList", "getChapterList": "/getChapterList",
getBookContent: "/getBookContent", "getBookContent": "/getBookContent",
saveBook: "/saveBook" "saveBook": "/saveBook"
}; };
var apiAddress = (apiName, url) => { var apiAddress = (apiName, url, index) => {
let address = $('#address').value || window.location.host; let address = $('#address').value || window.location.host;
if (!(/^http|^\/\//).test(address)) { if (!(/^http|^\/\//).test(address)) {
address = "//" + address; address = "//" + address;
@ -28,6 +28,9 @@ var apiAddress = (apiName, url) => {
address += ":1122"; address += ":1122";
} }
localStorage.setItem('address', address); localStorage.setItem('address', address);
if (apiName == "getBookContent") {
return address + apiMap[apiName] + (url ? "?url=" + encodeURIComponent(url) : "") + "&index=" + index;
}
return address + apiMap[apiName] + (url ? "?url=" + encodeURIComponent(url) : ""); return address + apiMap[apiName] + (url ? "?url=" + encodeURIComponent(url) : "");
}; };
@ -41,12 +44,12 @@ var init = () => {
alert(getBookshelf.errorMsg); alert(getBookshelf.errorMsg);
return; return;
} }
books = data.data.sort((book1, book2) => book1.serialNumber - book2.serialNumber); books = data.data;
books.forEach(book => { books.forEach((book, i) => {
let bookDiv = $c("div"); let bookDiv = $c("div");
let img = $c("img"); let img = $c("img");
img.src = book.coverUrl || randomImg; img.src = book.coverUrl || randomImg;
img.setAttribute("data-series-num", book.serialNumber); img.setAttribute("data-series-num", i);
bookDiv.appendChild(img); bookDiv.appendChild(img);
bookDiv.innerHTML += `<table><tbody> bookDiv.innerHTML += `<table><tbody>
<tr><td>书名</td><td>${book.name}</td></tr> <tr><td>书名</td><td>${book.name}</td></tr>
@ -85,9 +88,10 @@ var init = () => {
data.data.forEach(chapter => { data.data.forEach(chapter => {
let ch = $c("button"); let ch = $c("button");
ch.setAttribute("data-url", chapter.durChapterUrl); ch.setAttribute("data-url", chapter.bookUrl);
ch.setAttribute("title", chapter.durChapterName); ch.setAttribute("data-index", chapter.index);
ch.innerHTML = chapter.durChapterName.length > 15 ? chapter.durChapterName.substring(0, 14) + "..." : chapter.durChapterName; ch.setAttribute("title", chapter.title);
ch.innerHTML = chapter.title.length > 15 ? chapter.title.substring(0, 14) + "..." : chapter.title;
$("#chapter").appendChild(ch); $("#chapter").appendChild(ch);
}); });
$('#chapter').scrollTop = 0; $('#chapter').scrollTop = 0;
@ -129,12 +133,16 @@ $('#showchapter').addEventListener("click", () => {
$('#chapter').addEventListener("click", (e) => { $('#chapter').addEventListener("click", (e) => {
if (e.target.tagName === "BUTTON") { if (e.target.tagName === "BUTTON") {
var url = e.target.getAttribute("data-url"); var url = e.target.getAttribute("data-url");
var index = e.target.getAttribute("data-index");
var name = e.target.getAttribute("title"); var name = e.target.getAttribute("title");
if (!url) { if (!url) {
alert("未取得章节地址"); alert("未取得书籍地址");
}
if (!index && (0 != index)) {
alert("未取得章节索引");
} }
$("#content").innerHTML = "<p>" + name + " 加载中...</p>"; $("#content").innerHTML = "<p>" + name + " 加载中...</p>";
fetch(apiAddress("getBookContent", url), { mode: "cors" }) fetch(apiAddress("getBookContent", url, index), { mode: "cors" })
.then(res => res.json()) .then(res => res.json())
.then(data => { .then(data => {
if (!data.isSuccess) { if (!data.isSuccess) {

Loading…
Cancel
Save