您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Track continuous text input on websites and save to Tampermonkey's local storage
当前为
// ==UserScript== // @name Input Text Logger // @namespace http://tampermonkey.net/ // @version 0.1 // @description Track continuous text input on websites and save to Tampermonkey's local storage // @include * // @grant GM_setValue // @grant GM_getValue // ==/UserScript== (function () { "use strict"; let currentText = ""; let lastDomain = ""; let lastTimestamp = ""; let inactivityTimer; // STYLES const popupStyle = ` position: fixed; bottom: 100px; right: 10px; display: none; flex-direction: column; gap: 10px; width: 200px; padding: 10px; background: white; border: 1px solid black; `; // Функція для зберігання даних function saveData(newText, newDomain, newTimestamp) { // Отримання існуючих даних let existingData = GM_getValue("savedText", []); console.log(23, "до", GM_getValue("savedText")); // Додавання нових даних existingData.unshift({ text: newText, domain: newDomain, timestamp: newTimestamp, }); // Збереження оновлених даних GM_setValue("savedText", existingData); console.log(31, "після", GM_getValue("savedText")); } function resetInactivityTimer() { clearTimeout(inactivityTimer); inactivityTimer = setTimeout(() => { if (currentText.length > 0) { saveData(currentText, lastDomain, lastTimestamp); currentText = ""; } }, 10000); // 10 секунд неактивності } document.addEventListener("input", function (event) { const target = event.target; if ( (target.tagName === "INPUT" && target.type !== "password") || target.tagName === "TEXTAREA" ) { const domain = window.location.hostname; const timestamp = new Date().toISOString(); if (domain !== lastDomain) { if (currentText.length > 0) { saveData(currentText, lastDomain, lastTimestamp); } currentText = target.value; lastDomain = domain; lastTimestamp = timestamp; } else { currentText = target.value; } resetInactivityTimer(); } }); // Обробник події натискання клавіші document.addEventListener("keydown", function (event) { if (event.key === "Enter") { const domain = window.location.hostname; const timestamp = new Date().toISOString(); if (currentText.length > 0) { saveData(currentText, domain, timestamp); currentText = ""; } } }); window.addEventListener("blur", function () { if (currentText.length > 0) { saveData(currentText, lastDomain, lastTimestamp); currentText = ""; } }); window.addEventListener("beforeunload", function () { if (currentText.length > 0) { saveData(currentText, lastDomain, lastTimestamp); } }); // Функція для створення попапа function createPopup() { const popupHTML = ` <div id="tmPopup" class="pure-u-1-3" style="${popupStyle}"> <button id="viewTextBtn" class="pure-button pure-button-primary">Переглянути текст</button> <button id="deleteDataBtn" class="button-warning pure-button">Очистити дані</button> </div> `; document.body.insertAdjacentHTML("beforeend", popupHTML); // Обробник для кнопки перегляду тексту document .getElementById("viewTextBtn") .addEventListener("click", function () { const savedData = GM_getValue("savedText", {}); const dataStr = `Дані: ${JSON.stringify(savedData, null, 2)}`; const newTab = window.open(); newTab.document.body.innerText = dataStr; }); document .getElementById("deleteDataBtn") .addEventListener("click", function () { GM_setValue("savedText", []); }); } // Виклик функції для створення попапа createPopup(); // Створення круглої кнопки const circleBtnHTML = ` <div id="circleBtn" style="width: 50px; height: 50px; border-radius: 50%; background-color: green; position: fixed; bottom: 100px; right: 10px; z-index: 9999;"></div> `; document.body.insertAdjacentHTML("beforeend", circleBtnHTML); const circleBtn = document.getElementById("circleBtn"); const tmPopup = document.getElementById("tmPopup"); // Функція для розкриття попапа function togglePopup() { if (tmPopup.style.display === "none") { tmPopup.style.display = "flex"; circleBtn.style.display = "none"; } } // Функція для закриття попапа function closePopup() { tmPopup.style.display = "none"; circleBtn.style.display = "block"; } // Додавання обробника подій circleBtn.addEventListener("click", togglePopup); window.addEventListener("click", function (event) { if (event.target !== circleBtn && event.target !== tmPopup) { closePopup(); } }); })();