Greasy Fork is available in English.

Hi-history

获取网站浏览历史

// ==UserScript==
// @name         Hi-history
// @namespace    http://tampermonkey.net/
// @version      1.43
// @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 id='drag_point' style='cursor: pointer; width: 20px;height: 20px;border-radius: 50%;background-color: #ff5148;position: absolute;bottom: 5px;right: 5px;'></div><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.getElementById('drag_point');
        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 (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(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);