// ==UserScript==
// @name Hi-history
// @namespace http://tampermonkey.net/
// @version 1.44
// @description 获取网站浏览历史
// @author chillybird
// @match http://*/*
// @match https://*/*
// @grant unsafeWindow
// @run-at document-start
// ==/UserScript==
addEventListener('DOMContentLoaded', function () {
(function () {
'use strict';
if (self.frameElement && self.frameElement.tagName == "IFRAME") {
return;
};
if (window.frames.length != parent.frames.length) {
return;
};
let initialX;
let initialY;
let xOffset = 0;
let yOffset = 0;
let pos_x;
let pos_y;
var currentDomain = new URL(window.location.href).hostname;
document.addEventListener("click", function (e) {
var target = e.target;
while (target && !target.href) {
target = target.parentElement;
}
if (target) {
e.preventDefault();
var linkDomain = new URL(target.href).hostname;
if (linkDomain) {
if (linkDomain === currentDomain) {
window.location = target.href;
} else {
window.open(target.href);
}
}
}
});
var tab_flag = true; //是否已经弹出面板
var last_mark = 0;//当前url在列表中的位置
var i = NaN;
document.onkeydown = function (event) {
var e = event || window.event || arguments.callee.caller.arguments[0];
if (e.keyCode == 66 && e.altKey) {
if (tab_flag) {
document.getElementsByClassName("record_pull")[0].click();
} else {
document.getElementsByClassName("exit_his")[0].click();
}
tab_flag = !tab_flag;
}
if (e.keyCode == 66 && e.ctrlKey) {//ctrl+B复制当前网址
document.getElementsByClassName('s_item_bnt')[last_mark - 1].children[0].click();
}
}
//创建样式
var dom = document.createElement('style'),
dom_body = document.getElementsByTagName('body')[0];
dom.innerHTML = "#markBook #slider {margin: 0px 30px;width: 160px;background-size: 98% 3px;background: linear-gradient(to left, rgb(249, 118, 118) 0%, rgb(255, 255, 255) 100%);outline: none;-webkit-appearance: none;height: 3px;}#markBook input[type='range']::-webkit-slider-thumb {width: 10px;height: 10px;border-radius: 50%;background-color: rgb(249, 118, 118);box-shadow: 0 0 2px rgba(0, 0, 0, 0.3),0 3px 5px rgba(0, 0, 0, 0.2);cursor: pointer;-webkit-appearance: none;border: 0;}#markBook a:link{color:#0366d6;}#markBook{box-sizing:border-box;box-shadow:1px 1px 2px 1px #0000005c;position:fixed;z-index:9999999999;border-radius:5px;background-color:cornsilk;box-sizing:border-box;width:220px;}.bookNav{ user-select:none;background-color:#fbfbfb !important; border-bottom:1px solid #a0a0a04a !important;overflow:hidden;/*border-radius:5px;*/}.del_mark{position:absolute;bottom:0px;left:0px;}.bookNav,.del_mark{width:100%;height:28px;line-height:28px;/*position:absolute;bottom:0px;*/background-color:lightgray;font-size:16px;color:#A9A9A9;/*border:1px solid #000000;*/}.hismark_history{width:70px;line-height:28px;box-sizing:border-box;display:inline;height:28px;text-align:center;font-size:14px;color:#000;cursor:pointer;}.exit_his{width:100%;color:#fca273;height:28px;line-height:28px;text-align:center;box-sizing:border-box;cursor:pointer;}.exit_his:hover{background-color:#808080a3;color:rgb(239, 233, 232);}.history_notice{height:280px;width:190px;line-height:40px;}.history_tab{padding:10px 0px 0px 10px;display:block;box-sizing:border-box;padding-bottom:5px;width:250px;}.hismark_del{float:right;width:80px;height:28px;line-height:28px;font-size:12px;text-align:center;color:#000;cursor:pointer}.hismark_del:hover{color:red;}.s_item>a:hover {color:#428bca !important;}.s_item{width:190px;height:40px;position:relative;text-align:left;border-bottom:2px dashed #BEBEBE;padding-left:5px;line-height:40px;}.s_item a{text-decoration:none;font-size:14px;width:185px;position: absolute; top: 50%; transform: translate(0, -50%);display:inline-block;float:left;overflow:hidden; white-space:nowrap;text-overflow:ellipsis;}.record_pull{position:absolute;top:5px;left:190px;width:40px;height:40px;background-color:transparent;opacity:1;border-radius:5px;line-height:40px;font-size:30px;color:#FFFFFF;text-align:center;cursor:pointer;transition:all 400ms}.m_hismark{overflow:hidden;width:220px;}.s_item_bnt{position:absolute;top:10px; right:0px;font-size:14px;float:right;width:45px;height:20px;cursor:pointer;display:none;color:rgb(250, 128, 114);text-align:center;box-sizing:border-box;}.i_item_bnt{width:100%;height:20px;line-height:20px;box-sizing:border-box;float:left;}.i_item_bnt:last-child{border-left:2px solid rgb(250, 128, 114);}.his_alert{color:#42b983;font-size:18px;font-weight:bold;position:fixed;z-index:144469;animation:mymove 1200ms linear; -webkit-animation:mymove 1200ms linear;}@keyframes mymove{from {top:100px;left:50%;opacity:1;transform:translateX(-50%);}to {top:60px;left:50%;opacity:0;transform:translateX(-50%);display:none;}}@-webkit-keyframes mymove{from {top:100px;left:50%;opacity:1;transform:translateX(-50%);}to {top:60px;left:50%;opacity:0;transform:translateX(-50%);display:none;}}";
dom_body.appendChild(dom);
//创建标签
dom = document.createElement('div');
dom.id = "markBook";
var str = "<div class='bookNav'><div class='exit_his'>Hi-history</div></div><div class='m_hismark'>";// color:#fca273; background-color:#fbfbfb;
//获取浏览记录
if (!sessionStorage) {
str += "<div class='history_notice'>浏览器不支持sessionStorage!</div>";
} else {
// console.log('first record!');
if (his_item_length() < 1) {
//建立第一条记录
sessionStorage.setItem('url_1', location.href);
sessionStorage.setItem('url_1_name', (document.getElementsByTagName('title')[0]).innerHTML.split(' ').join('-'));
str += "<div class='history_tab'><div class='s_item'><a title=" + sessionStorage.getItem('url_' + i + '_name') + " href=" + sessionStorage.getItem('url_1') + ">1:" + sessionStorage.getItem('url_1_name') + "</a><div class='s_item_bnt'><div class='i_item_bnt'rgb(250, 128, 114)>复制</div></div><textarea class='s_copy' style='height:0px;width:0px;opacity:0;margin:0px;padding:0px;'>content</textarea></div></div>";
} else {
// console.log('continue!');
history_tab1();
}
}
//创建按钮
var slider_val = sessionStorage.getItem("sliderVal");
console.log("opacity", slider_val);
if (!slider_val) {
slider_val = 1;
}
str += "</div><input type='range' min='0' max='1' step='0.01' id='slider' value='" + slider_val + "'><a style='width:220px;height:40px;line-height:40px;display:block;color:#8e959a;font-size:14px;text-align:center;overflow:hidden;border-bottom:none;white-space:pre-wrap; text-overflow:ellipsis;' href=" + location.href.slice(0, location.href.indexOf(location.host)) + location.host + ">" + location.href.slice(0, location.href.indexOf(location.host)) + location.host + "</a><div class='record_pull'><img style='box-shadow:0px 0px 20px #c7c7c7;border-radius:50%;width:100%; height:100%' src='data:image/jpeg;base64,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'></div></div>";
dom.innerHTML = str;
dom_body.appendChild(dom);
//按钮事件
var record_pull = document.getElementsByClassName("record_pull")[0];
var markBook = document.getElementById('markBook');
var dragPoint = document.getElementsByClassName('bookNav')[0];
var exit_bnt = document.getElementsByClassName('exit_his')[0];
markBook.style.opacity = slider_val;
markBook.style.userSelect = "none";
record_pull.onclick = function () {
markBook.style.left = "0px";
record_pull.style.top = 0 + "px";
record_pull.style.right = 0 + "px"; record_pull.style.display = "none";
var W_height = document.documentElement.clientHeight;
var scroll_height = document.documentElement.clientHeight - 90;
var object_height = markBook.clientHeight;
var scroll_tab = document.getElementsByClassName("history_tab");
var m_hismark = document.getElementsByClassName("m_hismark")[0];
if ((object_height + 40) > W_height) {
scroll_tab[0].style.height = scroll_height + "px";
scroll_tab[0].style.overflow = "scroll";
scroll_tab[0].style.overflowX = "hidden";
m_hismark.style.height = scroll_height + "px";
}
};
hismark_init();
// 透明度滑动条
var slider = document.getElementById("slider");
slider.oninput = function () {
markBook.style.opacity = this.value;
sessionStorage.setItem("sliderVal", this.value);
}
//打开关闭面板按钮
record_pull.onmouseover = function () {
record_pull.style.left = 220 + "px";
};
record_pull.onmouseout = function () {
record_pull.style.left = 190 + "px";
};
exit_bnt.onclick = function () {
markBook.style.left = "-220px";
markBook.style.top = "0px";
markBook.style.transform = "none";
record_pull.style.top = 5 + "px"; record_pull.style.right = -40 + "px"; record_pull.style.display = "block";
xOffset = 0;
yOffset = 0;
sessionStorage.setItem("elementX", 0);
sessionStorage.setItem("elementY", 0);
};
dragPoint.addEventListener("mousedown", (event) => {
//document.body.style.userSelect = "none";
//markBook.style.transition = "none";
initialX = event.clientX - xOffset;
initialY = event.clientY - yOffset;
console.log("on", initialX, initialY);
});
dragPoint.addEventListener("mouseup", () => {
// 恢复动画
//element.style.userSelect = "text";
//markBook.style.transition = "all 400ms";
console.log("up");
});
// 拖放元素
dragPoint.addEventListener("dragstart", (event) => {
// 设置元素的透明度(可选)
markBook.style.opacity = "0.5";
console.log("dragstart");
});
dragPoint.addEventListener("dragend", (event) => {
// 恢复元素的透明度(可选
markBook.style.opacity = slider.getAttribute("value");
var left_pos = parseInt(extract_numder(markBook.style.left)[0]);
var top_pos = parseInt(extract_numder(markBook.style.top)[0]);
if (markBook.style.transform) {
var trans_pos = extract_numder(markBook.style.transform);
left_pos = left_pos + parseInt(trans_pos[1]);
top_pos = top_pos + parseInt(trans_pos[2]);
}
if (left_pos < 0 && top_pos < 0) {
console.log("dragover1", left_pos, top_pos, xOffset, yOffset);
xOffset = xOffset - left_pos;
yOffset = yOffset - top_pos;
left_pos = 0;
top_pos = 0;
}
if (left_pos < 0) {
console.log("dragover2", left_pos, top_pos, xOffset, yOffset);
xOffset = xOffset - left_pos;
left_pos = 0;
}
if (top_pos < 0) {
console.log("dragover3", left_pos, top_pos, xOffset, yOffset);
yOffset = yOffset - top_pos;
top_pos = 0;
}
setTranslate(xOffset, yOffset, markBook);
sessionStorage.setItem("elementX", left_pos);
sessionStorage.setItem("elementY", top_pos);
console.log("save", left_pos, top_pos);
console.log("dragend", xOffset, yOffset);
});
dragPoint.addEventListener("dragover", (event) => {
event.preventDefault();
xOffset = event.clientX - initialX;
yOffset = event.clientY - initialY;
setTranslate(xOffset, yOffset, markBook);
// console.log("dragover", event.clientX, event.clientY, initialX, initialY, xOffset, yOffset);
});
add_item_bnt();
// 设置元素的位置
function setTranslate(xPos, yPos, el) {
el.style.transform = "translate3d(" + xPos + "px, " + yPos + "px, 0)";
}
function extract_numder(str) {
var numbers = str.match(/-?\d+/g);
return numbers;
}
function copy_alert(text) {
var dom = document.createElement('div'),
dom_body = document.getElementsByTagName('body')[0];
// 判断网址是否复制成功
dom.classList.add('his_alert');
dom.innerHTML = text;
dom_body.appendChild(dom);
}
function copyText(text) {
var textarea = document.createElement("textarea"); // 创建一个文本域元素
textarea.value = text; // 将文本内容放入文本域
document.body.appendChild(textarea); // 将文本域添加到网页中
textarea.select(); // 选中文本域中的文本
var success = document.execCommand("copy"); // 执行复制命令
document.body.removeChild(textarea); // 将文本域从网页中移除
if (success) {
copy_alert("复制成功");
} else {
copy_alert("复制失败");
}
}
function hismark_init() {
if (top != window) {
console.log("Not a top window!");
return;
}
// 初始化位置
pos_x = sessionStorage.getItem("elementX") | 0;
pos_y = sessionStorage.getItem("elementY") | 0;
markBook = document.getElementById('markBook');
if (pos_x != 0 || pos_y != 0) {
record_pull.click();
markBook.style.left = `${pos_x}px`;
markBook.style.top = `${pos_y}px`;
} else {
markBook.style.left = "-220px";
markBook.style.top = "0px";
}
//markBook.style.transition = "all 400ms";
console.log("initail pos:", pos_x, pos_y);
//setTranslate(pos_x, pos_y, document.getElementById('markBook'));
}
function history_tab1() {
str += "<div class='history_tab'>";
var url_name = 'url_' + (his_item_length() + 1);
if (find_history(window.location.href)) {
sessionStorage.setItem(url_name, window.location.href);
sessionStorage.setItem(url_name + '_name', (document.getElementsByTagName('title')[0]).innerHTML.split(' ').join('-'));
}
for (var i = 1; i <= his_item_length(); i++) {
if (sessionStorage.getItem('url_' + i) !== null) {
if (sessionStorage.getItem('url_' + i + '_name') === null) {
sessionStorage.setItem('url_' + i + '_name', 'note' + i);
}
str += "<div class='s_item'><a title=" + sessionStorage.getItem('url_' + i + '_name') + " href=" + sessionStorage.getItem('url_' + i) + ">" + i + ":" + sessionStorage.getItem('url_' + i + '_name') + "</a><div class='s_item_bnt'><div class='i_item_bnt'rgb(250, 128, 114)>复制</div></div><textarea class='s_copy' style='height:0px;width:0px;opacity:0;margin:0px;padding:0px;'>content</textarea></div>";
}
}
str += "</div>";
}
function extractBaseUrl(url) {
// 使用URL对象来解析给定的URL
const parsedUrl = new URL(url);
// 返回不包含查询参数的基础URL
return `${parsedUrl.origin}${parsedUrl.pathname}`;
}
function find_history(his_url) {
var baseUrl = extractBaseUrl(his_url);
for (var i = 1; ; i++) {
var storedUrl = sessionStorage.getItem('url_' + i);
if (!storedUrl) break;
if (extractBaseUrl(storedUrl) === baseUrl) return false;
}
return true;
}
function his_item_length() {
var len = 0;
for (var i = 1; i <= sessionStorage.length; i++) {
if (sessionStorage.getItem('url_' + i) !== null)
len = len + 1;
}
return len;
}
function his_mark(his_url, last_mark) {
var historyTab = document.getElementsByClassName("history_tab")[0].children;
var his_index = null;
for (var i = 1; i <= sessionStorage.length; i++) {
var storedUrl = sessionStorage.getItem('url_' + i);
if (extractBaseUrl(storedUrl) === his_url) {
his_index = i;
break;
}
}
if (last_mark !== 0 && last_mark !== his_index && historyTab[last_mark - 1]) {
historyTab[last_mark - 1].style.borderBottom = "2px dashed #BEBEBE";
}
if (his_index !== null && historyTab[his_index - 1]) {
historyTab[his_index - 1].style.borderBottom = "2px solid #FA8072";
}
return his_index;
}
// 检查url是否发生改变,使用框架时,嵌套路由得改变,不引起页面得刷新
var win_url = location.href;
setInterval(function () {
if (win_url !== location.href) {
var url_name = 'url_' + (his_item_length() + 1);
if (find_history(location.href)) {
sessionStorage.setItem(url_name, window.location.href);
sessionStorage.setItem(url_name + '_name', (document.getElementsByTagName('title')[0]).innerHTML);
var ele = document.createElement('div');
ele.className = "s_item";
ele.innerHTML = "<a href=" + sessionStorage.getItem(url_name) + ">" + (his_item_length()) + ":" + sessionStorage.getItem(url_name + '_name') + "</a><div class='s_item_bnt'><div class='i_item_bnt'rgb(250, 128, 114)>复制</div></div><textarea class='s_copy' style='height:0px;width:0px;opacity:0;margin:0px;padding:0px;'>content</textarea>";
document.getElementsByClassName("history_tab")[0].appendChild(ele);
add_item_bnt();
}
win_url = location.href;
}
his_mark(extractBaseUrl(location.href));
}, 3000);
function add_item_bnt() {
//删除与复制按钮
var s_item = document.getElementsByClassName('s_item');
var s_item_bnt = document.getElementsByClassName('s_item_bnt');
var s_copy = document.getElementsByClassName('s_copy');
for (var i = 0; i < s_item.length; i++) {
(function (i) {
s_item[i].onmouseover = function () {
s_item_bnt[i].style.display = "block";
s_item[i].children[0].style.width = 140 + 'px';
};
s_item[i].onmouseout = function () {
s_item_bnt[i].style.display = "none";
s_item[i].children[0].style.width = 185 + 'px';
};
s_item_bnt[i].children[0].onclick = function () {
copyText("[" + sessionStorage.getItem('url_' + (i + 1) + '_name') + "](" + sessionStorage.getItem('url_' + (i + 1)) + ")");
};
})(i);
}
}
})();
}, false);