调通了浏览记录功能

This commit is contained in:
free will
2020-12-03 21:03:00 +08:00
parent a4b3d37942
commit 96685f9030
5 changed files with 179 additions and 24 deletions
+5
View File
@@ -0,0 +1,5 @@
https%3A%2F%2Fwww.baidu.com%2F %E7%99%BE%E5%BA%A6%E4%B8%80%E4%B8%8B%EF%BC%8C%E4%BD%A0%E5%B0%B1%E7%9F%A5%E9%81%93 2020%E5%B9%B412%E6%9C%8803%E6%97%A5+21%3A00
https%3A%2F%2Fwww.baidu.com%2Fs%3Fie%3Dutf-8%26f%3D8%26rsv_bp%3D1%26rsv_idx%3D1%26tn%3Dbaidu%26wd%3Dbilibili%26fenlei%3D256%26rsv_pq%3Ddfe6c2490001bc8d%26rsv_t%3D9eb6APCK805M62E1oDNspwDlbJKIyeYTKBtMx3%252B5yGeQ9m57Zb3DXshNNdE%26rqlang%3Dcn%26rsv_enter%3D1%26rsv_dl%3Dib%26rsv_sug3%3D12%26rsv_sug1%3D9%26rsv_sug7%3D101%26rsv_sug2%3D0%26rsv_btype%3Di%26inputT%3D1810%26rsv_sug4%3D2767 bilibili_%E7%99%BE%E5%BA%A6%E6%90%9C%E7%B4%A2 2020%E5%B9%B412%E6%9C%8803%E6%97%A5+21%3A00
https%3A%2F%2Fwww.bilibili.com%2F %E5%93%94%E5%93%A9%E5%93%94%E5%93%A9+%28%E3%82%9C-%E3%82%9C%29%E3%81%A4%E3%83%AD+%E5%B9%B2%E6%9D%AF%7E-bilibili 2020%E5%B9%B412%E6%9C%8803%E6%97%A5+21%3A00
https%3A%2F%2Fwww.bilibili.com%2F %E5%93%94%E5%93%A9%E5%93%94%E5%93%A9+%28%E3%82%9C-%E3%82%9C%29%E3%81%A4%E3%83%AD+%E5%B9%B2%E6%9D%AF%7E-bilibili 2020%E5%B9%B412%E6%9C%8803%E6%97%A5+21%3A01
https%3A%2F%2Fwww.baidu.com%2Fs%3Fie%3Dutf-8%26f%3D8%26rsv_bp%3D1%26rsv_idx%3D1%26tn%3Dbaidu%26wd%3Dbilibili%26fenlei%3D256%26rsv_pq%3Ddfe6c2490001bc8d%26rsv_t%3D9eb6APCK805M62E1oDNspwDlbJKIyeYTKBtMx3%252B5yGeQ9m57Zb3DXshNNdE%26rqlang%3Dcn%26rsv_enter%3D1%26rsv_dl%3Dib%26rsv_sug3%3D12%26rsv_sug1%3D9%26rsv_sug7%3D101%26rsv_sug2%3D0%26rsv_btype%3Di%26inputT%3D1810%26rsv_sug4%3D2767 bilibili_%E7%99%BE%E5%BA%A6%E6%90%9C%E7%B4%A2 2020%E5%B9%B412%E6%9C%8803%E6%97%A5+21%3A01
@@ -0,0 +1,77 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>历史记录</title>
</head>
<body>
<h1>MIN-Browser Browsing History</h1>
<hr>
<ul id="list"></ul>
<hr>
</body>
<script>
// function testShow() {
// var test1={id:"1",title:"百度两下",urlString:"https://www.baidu.com"};
// var test2={id:"2",title:"淅沥淅沥",urlString:"https://www.bilibili.com"};
// var test3={id:"3",title:"码云",urlString:"https://gitee.com/"};
// var bk=[test1,test2,test3];
// showBookmarks(bk);
// }
var namecache="history_name";
var timecache="history_time";
function setCacheName(name) {
namecache=name;
}
function setCacheTime(time) {
timecache=time;
}
function addOneHistory(history_url) {
var bookmark={time:timecache,title:namecache,urlString:history_url};
var bk=[bookmark];
showBookmarks(bk);
}
// 唯一ID产生器
// function next_id(){
// var current_id = 0;
// return function (){
// return ++current_id;
// }
// }
// var g = next_id();
// 显示条目
function showBookmarks(bk) {
for(var i=0;i<bk.length;i++){
var object=bk[i];
// 获取元素:链接
var li=document.createElement("li");
li.innerHTML=object.time+" "+object.title+" "+(object.urlString).link(object.urlString)+" ";
// li.id=g();
// javaSetter.addMap(li.id,object.urlString);
// li.style="display:inline;";
// 获取元素:按钮
// var btn=document.createElement("button");
// btn.innerText="Delete";
// btn.id=g();
// btn.style="background-color:red;color:white";
// btn.onclick=function () {
// // alert(this.id);
// // 先执行删除数据的操作
// javaSetter.deleteBookmarkById(this.id-1);
// // 再删除页面元素
// document.getElementById(this.id-1).remove();
// document.getElementById(this.id).remove();
// };
// 获取元素:换行
// var br=document.createElement("p");
// br.innerHTML="";
// 显示元素到界面
var ul=document.getElementById("list");
ul.appendChild(li);
// ul.appendChild(btn);
// ul.appendChild(br);
}
}
// testShow();
</script>
</html>
@@ -5,8 +5,10 @@ package cn.minbrowser.view;
*/
import cn.minbrowser.MainApp;
import cn.minbrowser.model.Bookmark;
import cn.minbrowser.model.BrowsingHistoy;
import cn.minbrowser.protocol.MinURL.MinURLStreamHandlerFactory;
import cn.minbrowser.util.BookMarkUtil;
import cn.minbrowser.util.BrowsingHistoryUtil;
import cn.minbrowser.util.CustomUrlUtil;
import cn.minbrowser.util.PopupUtil;
import cn.minbrowser.view.minibrowser.MiniTab;
@@ -47,6 +49,9 @@ public class NavigationBarController implements Initializable {
// 保存所有标签收藏页的信息
public Bookmark bookmark;
// 保存所有浏览记录
public BrowsingHistoy browsingHistoy;
// 收藏标签页
@FXML
private TextField bookmarkName;
@@ -66,6 +71,8 @@ public class NavigationBarController implements Initializable {
registerMinUrl();
// 加载标签收藏页的所有数据
bookmark= BookMarkUtil.readBookMarks();
// 加载浏览记录的所有数据
browsingHistoy= BrowsingHistoryUtil.readBrowsingHistoryRecords();
}
public MainApp getMainApp(){
@@ -199,19 +206,19 @@ public class NavigationBarController implements Initializable {
*/
public void showBrowsingHistory(){
// 遍历tab:如果没浏览记录界面,就打开一个新的界面;有,则将焦点改到该界面
// int flag=0; //0表示没界面,>0表示有
// for (Tab tab: tabPane.getTabs()) {
// MiniTab miniTab= (MiniTab) tab;
// if(miniTab.getUrlText().equals(CustomUrlUtil.BrowsingHistory_URL)){
// flag++;
// tabPane.getSelectionModel().select(tab);
// }
// }
// if(flag==0) {
// MiniTab miniTab = new MiniTab(CustomUrlUtil.BrowsingHistory_URL, this);
// tabPane.getTabs().add(miniTab);
// tabPane.getSelectionModel().select(miniTab);
// }
int flag=0; //0表示没界面,>0表示有
for (Tab tab: tabPane.getTabs()) {
MiniTab miniTab= (MiniTab) tab;
if(miniTab.getUrlText().equals(CustomUrlUtil.BrowsingHistory_URL)){
flag++;
tabPane.getSelectionModel().select(tab);
}
}
if(flag==0) {
MiniTab miniTab = new MiniTab(CustomUrlUtil.BrowsingHistory_URL, this);
tabPane.getTabs().add(miniTab);
tabPane.getSelectionModel().select(miniTab);
}
hideSettingPane();
}
+22 -10
View File
@@ -3,11 +3,14 @@ package cn.minbrowser.view;
import cn.minbrowser.MiniMinData.DataStructure.MINHTTP_ResponseDataPacket;
import cn.minbrowser.MiniMinData.util.MINHTTP_DataPacketFormatUtil;
import cn.minbrowser.model.Bookmark;
import cn.minbrowser.model.BrowsingHistoy;
import cn.minbrowser.util.BookMarkUtil;
import cn.minbrowser.util.BrowsingHistoryUtil;
import cn.minbrowser.util.FilePermissionUtil;
import cn.minbrowser.view.login.LoginHandler;
import cn.minbrowser.view.login.RegisterHandler;
import java.util.ArrayList;
import java.util.List;
import static cn.minbrowser.util.FilePermissionUtil.getRootPath;
@@ -33,15 +36,24 @@ public class TestMain {
// Bookmark.BookmarkModel bookmarkModel=bookmarkModels.get(i);
// System.out.println(bookmarkModel.getName()+" "+bookmarkModel.getUrl());
// }
String testString="MIN-HTTP/1.0 200 OK\n"+
"Content-Type application/json\n"+
"Content-Length 15\n"+
"\n"+
"{helloKitty}";
// System.out.println(testString);
MINHTTP_ResponseDataPacket responseDataPacket=
MINHTTP_DataPacketFormatUtil.praseMINHTTPResponsePacket(testString);
responseDataPacket.printSelf();
System.out.println("=====================");
BrowsingHistoy.OneHistoryRecord oneHistoryRecord=new
BrowsingHistoy.OneHistoryRecord("beidu.com","北度一下","星期三 下午 四点");
BrowsingHistoryUtil.saveOneHistoryRecord(oneHistoryRecord);
BrowsingHistoy browsingHistoy= BrowsingHistoryUtil.readBrowsingHistoryRecords();
List<BrowsingHistoy.OneHistoryRecord> records=browsingHistoy.getHistoryRecords();
for(int i=0;i<records.size();i++){
System.out.println("1: "+records.get(i).getUrl()
+"2: "+records.get(i).getTitle()+"3: "+records.get(i).getDate());
}
// String testString="MIN-HTTP/1.0 200 OK\n"+
// "Content-Type application/json\n"+
// "Content-Length 15\n"+
// "\n"+
// "{helloKitty}";
//// System.out.println(testString);
// MINHTTP_ResponseDataPacket responseDataPacket=
// MINHTTP_DataPacketFormatUtil.praseMINHTTPResponsePacket(testString);
// responseDataPacket.printSelf();
// System.out.println("=====================");
}
}
@@ -1,7 +1,9 @@
package cn.minbrowser.view.minibrowser;
import cn.minbrowser.model.Bookmark;
import cn.minbrowser.model.BrowsingHistoy;
import cn.minbrowser.protocol.util.MinUrlUtil;
import cn.minbrowser.util.BrowsingHistoryUtil;
import cn.minbrowser.util.ConnectTestUtil;
import cn.minbrowser.util.FilePermissionUtil;
import cn.minbrowser.view.MainPageHTMLController;
@@ -35,6 +37,7 @@ import java.io.UnsupportedEncodingException;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLDecoder;
import java.text.SimpleDateFormat;
import java.util.LinkedList;
import java.util.List;
@@ -212,6 +215,8 @@ public class MiniTab extends Tab {
showRegisterPage();
}else if(url.equals(Bookmarks_URL) || url.equals(Bookmarks_SHOW_URL)){
showBookmarksPage();
}else if(url.equals(BrowsingHistory_URL)){
showBrowsingHistoryPage();
}else {
load(url);
}
@@ -236,6 +241,9 @@ public class MiniTab extends Tab {
if (newValue != null && !newValue.trim().isEmpty()) {
setText(newValue);
setTooltip(new Tooltip(newValue));
// 将该浏览记录保存起来
System.out.println("getUrlText(): "+webview.getEngine().getLocation());
addToHistory(newValue,webview.getEngine().getLocation());
} else {
setText(DEFAULT_TEXT);
setTooltip(null);
@@ -268,6 +276,23 @@ public class MiniTab extends Tab {
});
}
private void addToHistory(String title,String url){
// 如果是打开的本地网页,则不进行记录
if(url.startsWith("file:")||url.startsWith("minbrowser:")){
return ;
}
// 获取时间
long time = System.currentTimeMillis();
SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm");
String day = dateFormat.format(time);
// 保存到本地
BrowsingHistoy.OneHistoryRecord oneHistoryRecord=
new BrowsingHistoy.OneHistoryRecord(url,title,day);
BrowsingHistoryUtil.saveOneHistoryRecord(oneHistoryRecord);
// 更新数据结构
navigationBarController.browsingHistoy.addOneHistoryRecord(oneHistoryRecord);
}
private Button getButton(Style style) {
Button btn = new Button("");
btn.setPrefWidth(25D);
@@ -354,6 +379,9 @@ public class MiniTab extends Tab {
input.setText(Bookmarks_SHOW_URL);
setChangingBookmarkInfoListener();
showBookmarkInfoByListenEngineState();
}else if(url.contains("resources/html/BrowsingHistory/history.html")){
input.setText(BrowsingHistory_URL);
showHistoryInfoByListenEngineState();
}else {
try {
input.setText(URLDecoder.decode(url, "UTF-8"));
@@ -386,7 +414,7 @@ public class MiniTab extends Tab {
}
/**
* 执行bookmarks.html中的js代码,显示配置信息
* 执行bookmarks.html中的js代码,显示书签信息
*/
private void showBookmarkInfoByListenEngineState() {
List<Bookmark.BookmarkModel> bookmarkModels=navigationBarController.bookmark.getBookmarks();
@@ -409,6 +437,23 @@ public class MiniTab extends Tab {
System.out.println("finished.");
}
/**
* 执行history.html中的js代码,显示浏览记录信息
*/
private void showHistoryInfoByListenEngineState() {
List<BrowsingHistoy.OneHistoryRecord> records=navigationBarController.browsingHistoy.getHistoryRecords();
for(int i=0;i<records.size();i++){
System.out.println("1: "+records.get(i).getUrl()
+"2: "+records.get(i).getTitle()+"3: "+records.get(i).getDate());
webview.getEngine().executeScript(
"setCacheName(\""+records.get(i).getTitle()+"\");");
webview.getEngine().executeScript(
"setCacheTime(\""+records.get(i).getDate()+"\");");
webview.getEngine().executeScript(
"addOneHistory(\""+records.get(i).getUrl()+"\");");
}
}
/**
* 将LoginHTMLController作为对象传入HTML中的JS,从而被JS调用
*/
@@ -496,6 +541,15 @@ public class MiniTab extends Tab {
}
}
// 显示浏览记录页
public void showBrowsingHistoryPage(){
try {
loadLocalPage("/resources/html" + "/BrowsingHistory/history.html");
} catch (MalformedURLException e) {
e.printStackTrace();
}
}
/**
* 加载本地页面
* @param path 项目根目录下的路径