您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
您是否访问过
// ==UserScript== // @name 您访问该网站多少次 // @description 您是否访问过 // @description:en 您是否访问过 // @version 0.3.1 // @description try to take over the world! // @author chancoki // @include /.*:.*/ // @icon https://www.bilibili.com/favicon.ico // @grant none // @namespace https://greasyfork.org/users/754467 // ==/UserScript== (function () { "use strict"; const body = document.body; const div = document.createElement("div"); const p = document.createElement("p"); body.appendChild(div); body.appendChild(p); div.className = "aView1"; p.innerHTML = ` <style> .aView1 { display: none; width: 220px; height: 40px; border-radius: 20px; line-height: 40px; text-align: center; font-size: 15px; box-shadow: 0 0 10px #aaa; font-weight: bolder; background-color: rgba(255, 255, 255, 0.5); backdrop-filter: saturate(180%) blur(20px); position: fixed; left: 50%; top: -65px; transform: translate(-50%, 0); z-index: 3000; color: #222; user-select: none; animation: run 10s; } .aView1 div { display: flex; justify-content: center; align-items: center; } .aView1 div img { width: 18px; height: 18px; margin-right: 5px; } @keyframes run { 0%, 100% { top: -65px; opacity: .3; } 20%, 80% { top: 75px; opacity: 1; } } } .history { list-style: none; padding: 0; margin: 0; display: none; } .history li { width: 135px; background-color: rgba(255, 255, 255, 0.5); backdrop-filter: saturate(180%) blur(20px); box-shadow: 0 0 3px #bbb; border-radius: 5px; margin-bottom: 2px; height: 20px; display: flex; justify-content: space-between; align-items: center; padding: 0 5px; } .history li span { font-size: 12px; line-height: 20px; } .history li button { height: 14px; width: 14px; border-radius: 50%; text-align: center; padding: 0; outline: none; font-size: 12px; border: none; background-color: #fff; color: #bbb; box-shadow: 0 0 3px #bbb; line-height: 14px; transition: all .6s; } .history li button:hover { background-color: red; color: #fff; } </style> <div class="setting" style=" position: fixed; top: 75px; left: 5px; z-index:3000; display: none; "> <ul class="history"> </ul> </div> `; const date = new Date(); const month = date.getMonth() + 1; const day = date.getDate(); const hour = date.getHours(); const m = date.getMinutes(); const history = document.querySelector(".history"); const setting = document.querySelector(".setting"); let storage = JSON.parse(window.localStorage.getItem("myview")) ? JSON.parse(window.localStorage.getItem("myview")) : []; const item = Object.keys(localStorage).filter((item) =>/(\d\d?-\d\d? \d\d?:\d\d? (访问)?备份)|(myseen)/.test(item)); let hLi = ""; for (let i of item) hLi += `<li><span>${i}</span><button data-name='${i}' title='删除记录'>X</button></li>`; history.innerHTML = hLi; const bf = item.filter((i) => JSON.parse(window.localStorage.getItem(i)).some((i) => i.url == location.pathname)); const beifen = JSON.parse(window.localStorage.getItem(bf[0]))? JSON.parse(window.localStorage.getItem(bf[0])) : []; if ( storage.some((item) => item.url == location.pathname) || beifen.some((item) => item.url == location.pathname) ) { let tmp = storage.filter((item) => item.url == location.pathname); if (tmp.length <= 0) { tmp = beifen.filter((item) => item.url == location.pathname); beifen[beifen.indexOf(tmp[0])].record = (beifen[beifen.indexOf(tmp[0])].record || 1) + 1; aView("您已访问 " + beifen[beifen.indexOf(tmp[0])].record + " 次该网站"); window.localStorage.setItem(bf[0], JSON.stringify(beifen)); } else { storage[storage.indexOf(tmp[0])].record = (storage[storage.indexOf(tmp[0])].record || 2) + 1; aView( "您已访问 " + storage[storage.indexOf(tmp[0])].record + " 次该网站" ); } } else { const time = `${month}-${day} ${hour}:${m}`; if (storage.length >= 100) { window.localStorage.setItem(time + " 访问备份", JSON.stringify(storage)); storage = []; } storage.push({ url: location.pathname, title: document.title, time, record: 1, }); aView("已经加入访问记录"); } window.localStorage.setItem("myview", JSON.stringify(storage)); function aView(flag) { if (/已删除/.test(flag)) { div.style.display = "block"; div.innerHTML = `<div><img src='${ window.location.protocol + "//" + window.location.host + "/favicon.ico" }'class = 'img'/><span>${flag}</span></div>`; const img = document.querySelector(".img"); img.onerror = () => { img.style.display = "none"; }; } else { setTimeout(() => { div.style.display = "block"; div.innerHTML = `<div><img src='${ window.location.protocol + "//" + window.location.host + "/favicon.ico" }'class = 'img'/><span>${flag}</span></div>`; const img = document.querySelector(".img"); img.onerror = () => { img.style.display = "none"; }; }, 3500); } setTimeout(() => { div.style.display = "none"; }, 13500); } div.addEventListener("click", () => { div.style.display = "none"; }); let isOpen = true; document.addEventListener("keydown", (e) => { if (e.keyCode == 79) { if (isOpen) { setting.style.display = "block"; } else { setting.style.display = "none"; } isOpen = !isOpen; } }); history.addEventListener("click", (e) => { if (e.target.nodeName == "BUTTON") { window.localStorage.removeItem(e.target.dataset.name); const item = Object.keys(localStorage).filter((item) => /(\d\d?-\d\d? \d\d?:\d\d? (访问)?备份)|(myseen)/.test(item) ); let hLi = ""; for (let i of item) hLi += `<li><span>${i}</span><button data-name='${i}'>X</button></li>`; history.innerHTML = hLi; aView("已删除 " + e.target.dataset.name); } }); // Your code here... })();