// ==UserScript== // @name Hi-history // @namespace http://tampermonkey.net/ // @version 1.22 // @description 获取网站浏览历史 // @author chillybird // @match http://*/* // @match https://*/* // @grant none // @downloadURL none // ==/UserScript== (function() { 'use strict'; if (self.frameElement && self.frameElement.tagName == "IFRAME") { return; }; if (window.frames.length != parent.frames.length) { return; }; //if (self != top){ // return; //} //使用方法 按ctrl+z打开面板 ctrl+x复制当前网址 任意键关闭面板 document.body.addEventListener('mousedown',function(e){ var name=location.hostname.split('.')[1]; var c_name=location.hostname.split('.')[0]; if((String(e.target).search(name)<0||String(e.target).search(c_name)<0)&&String(e.target).search("http")>=0){//alert(e.target); if(String(e.target)=="https://www.baidu.com/"){e.target.target='_self';}else{e.target.target = '_blank';}}else if((String(e.target.parentNode).search(name)<0||String(e.target.parentNode).search(c_name)<0)&&String(e.target.parentNode).search("http")>=0){ e.target.parentNode.target='_blank';}else if((String(e.target.parentNode.parentNode).search(name)<0||String(e.target.parentNode.parentNode).search(c_name)<0)&&String(e.target.parentNode.parentNode).search("http")>=0){ e.target.parentNode.parentNode.target='_blank';}else if((String(e.target.parentNode.parentNode.parentNode).search(name)<0||String(e.target.parentNode.parentNode.parentNode).search(c_name)<0)&&String(e.target.parentNode.parentNode.parentNode).search("http")>=0){ e.target.parentNode.parentNode.parentNode.target='_blank';}else if((String(e.target.parentNode.parentNode.parentNode.parentNode).search(name)<0||String(e.target.parentNode.parentNode.parentNode.parentNode).search(c_name)<0)&&String(e.target.parentNode.parentNode.parentNode.parentNode).search("http")>=0){ e.target.parentNode.parentNode.parentNode.parentNode.target='_blank';}else{ if(String(e.target).search(name)>=0){ e.target.target = '_self';}else if(String(e.target.parentNode).search(name)>=0){ e.target.parentNode.target='_self';}else if(String(e.target.parentNode.parentNode).search(name)>=0){ e.target.parentNode.parentNode.target='_self';}else if(String(e.target.parentNode.parentNode.parentNode).search(name)>=0){ e.target.parentNode.parentNode.parentNode.target='_self';}else if(String(e.target.parentNode.parentNode.parentNode.parentNode).search(name)>=0){ e.target.parentNode.parentNode.parentNode.parentNode.target='_self';}else{} } }); var tab_flag = true; var last_mark= 0;//当前url在列表中的位置 document.onkeydown=function(event){ var e = event || window.event || arguments.callee.caller.arguments[0]; if (e.keyCode == 90 && e.ctrlKey) { if(tab_flag){ document.getElementsByClassName("record_pull")[0].click(); }else{ document.getElementsByClassName("exit_his")[0].click(); } tab_flag = !tab_flag; } if(e.keyCode == 88 && e.ctrlKey){//ctrl+x复制当前网址 document.getElementsByClassName('s_item_bnt')[last_mark-1].children[0].click(); copy_alert(); } } //创建样式 var dom=document.createElement('style'), dom_body=document.getElementsByTagName('body')[0]; dom.innerHTML='#markBook a:link{color: #0366d6;}#markBook{box-sizing: border-box;box-shadow: 1px 1px 2px 1px #0000005c;position: fixed;left: -220px;top: 0px;z-index: 9999999999;border-radius:5px;background-color: cornsilk;box-sizing: border-box;width: 220px;transition:all 400ms;}.bookNav{ 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{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;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%);}}@-webkit-keyframes mymove{from {top: 100px;left: 50%;opacity: 1;transform: translateX(-50%);}to {top: 60px;left: 50%;opacity: 0;transform: translateX(-50%);}}'; dom_body.appendChild(dom); //创建标签 dom=document.createElement('div'); dom.id="markBook"; // var str="
Hi-history
"; var str="
Hi-history
";// color: #fca273; background-color: #fbfbfb; hismark_init(); //创建按钮 str+="
"+location.href.slice(0,location.href.indexOf(location.host))+location.host+"
"; dom.innerHTML=str; dom_body.appendChild(dom); var hist=document.getElementsByClassName('hismark_history')[0]; var history_tab=document.getElementsByClassName('history_tab')[0]; hist.addEventListener("mouseover",function(){ hist.className="hismark_history hismark_active";history_tab.style.display='block';}); //按钮事件 var record_pull=document.getElementsByClassName("record_pull")[0]; var markBook=document.getElementById('markBook'); var exit_bnt=document.getElementsByClassName('exit_his')[0]; record_pull.onclick=function(){ markBook.style.left=0+"px";record_pull.style.top=0+"px";record_pull.style.right=0+"px";record_pull.style.display="none"; //超出网页可视高度时固定高度,tab部分超出滚动,待改进 var W_height=document.documentElement.clientHeight; var scroll_height=document.documentElement.clientHeight-73; 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"; } }; //打开关闭面板按钮 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=-220+"px";record_pull.style.top=5+"px";record_pull.style.right=-40+"px";record_pull.style.display="block";}; add_item_bnt(); function copy_alert(){ var dom = document.createElement('div'), dom_body=document.getElementsByTagName('body')[0]; var str = '网址复制成功!'; dom.classList.add('his_alert'); dom.innerHTML=str; dom_body.appendChild(dom); } function hismark_init(){ if (top != window) { console.log("Not a top window!"); return; } //获取浏览记录 if(!sessionStorage) { str+="
浏览器不支持sessionStorage!
"; }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); str+="
1:"+sessionStorage.getItem('url_1_name')+"
复制
"; }else{ // console.log('continue!'); history_tab1(); } } } function history_tab1(){ str+="
"; 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); } 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+="
"+i+":"+sessionStorage.getItem('url_'+i+'_name')+"
复制
"; } } str+="
"; } function find_history(his_url){ var i=1; var count=0; while(sessionStorage.getItem('url_'+i)!==null){ if(sessionStorage.getItem('url_'+i)==his_url) count=count+1; if(count>0) return false; i=i+1; } 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){ var his_index; var i=1; while(sessionStorage.getItem('url_'+i)!==null){ if(sessionStorage.getItem('url_'+i)==his_url){ his_index=i; break; } i=i+1; } if(last_mark!==0&&last_mark!==his_index) document.getElementsByClassName("history_tab")[0].children[last_mark-1].style.borderBottom="2px dashed #BEBEBE";//将上一个列表项的下划线变回虚线 last_mark=his_index; document.getElementsByClassName("history_tab")[0].children[his_index-1].style.borderBottom="2px solid #FA8072"; } // 检查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=""+(his_item_length())+":"+sessionStorage.getItem(url_name+'_name')+"
复制
"; 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