您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
View local storage keys and their values
- // ==UserScript==
- // @name Local Storage Viewer
- // @namespace Violentmonkey Scripts
- // @version 1.01
- // @description View local storage keys and their values
- // @license MIT
- // @author H17S3/Spartanian
- // @match http://*/*
- // @match https://*/*
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- var container = document.createElement('div');
- container.style.position = 'fixed';
- container.style.top = '10px';
- container.style.right = '10px';
- container.style.width = '400px';
- container.style.maxHeight = '500px';
- container.style.overflow = 'auto';
- container.style.background = '#2b2b2b';
- container.style.border = '1px solid #555';
- container.style.borderRadius = '5px';
- container.style.zIndex = '9999';
- container.style.fontFamily = 'Roboto, Arial, sans-serif';
- container.draggable = true;
- var header = document.createElement('div');
- header.style.padding = '10px';
- header.style.cursor = 'move';
- header.style.background = '#222';
- header.style.borderBottom = '1px solid #555';
- header.style.borderRadius = '5px 5px 0 0';
- header.style.color = '#fff';
- header.style.fontSize = '18px';
- header.style.fontWeight = 'bold';
- header.textContent = 'Local Storage Viewer';
- header.style.fontFamily = 'Roboto, Arial, sans-serif';
- container.appendChild(header);
- var content = document.createElement('div');
- content.style.padding = '10px';
- content.style.color = '#fff';
- container.appendChild(content);
- var isDragging = false;
- var startX = 0;
- var startY = 0;
- header.addEventListener('mousedown', function (event) {
- isDragging = true;
- startX = event.clientX - container.offsetLeft;
- startY = event.clientY - container.offsetTop;
- });
- document.addEventListener('mouseup', function () {
- isDragging = false;
- });
- document.addEventListener('mousemove', function (event) {
- if (isDragging) {
- container.style.left = (event.clientX - startX) + 'px';
- container.style.top = (event.clientY - startY) + 'px';
- }
- });
- for (var i = 0; i < localStorage.length; i++) {
- var key = localStorage.key(i);
- var value = localStorage.getItem(key);
- var dataType = typeof value;
- var item = document.createElement('div');
- item.style.marginBottom = '10px';
- var dropdownButton = document.createElement('span');
- dropdownButton.textContent = '▼';
- dropdownButton.style.cursor = 'pointer';
- dropdownButton.style.fontFamily = 'Roboto, Arial, sans-serif';
- dropdownButton.style.marginRight = '5px';
- dropdownButton.addEventListener('click', createDropdownHandler(item, dropdownButton));
- item.appendChild(dropdownButton);
- var keyElement = document.createElement('span');
- keyElement.textContent = key;
- keyElement.style.fontWeight = 'bold';
- keyElement.style.fontFamily = 'Roboto, Arial, sans-serif';
- keyElement.style.marginRight = '5px';
- item.appendChild(keyElement);
- var valueElement = document.createElement('pre');
- valueElement.innerHTML = formatValue(value);
- valueElement.style.marginLeft = '15px';
- valueElement.style.display = 'none';
- valueElement.style.whiteSpace = 'pre-wrap';
- valueElement.style.fontFamily = 'Roboto, Arial, sans-serif';
- valueElement.style.wordWrap = 'break-word';
- item.appendChild(valueElement);
- if (dataType === 'object') {
- dropdownButton.style.visibility = 'visible';
- }
- content.appendChild(item);
- }
- function createDropdownHandler(item, dropdownButton) {
- return function () {
- var valueElement = item.querySelector('pre');
- if (item.classList.contains('expanded')) {
- item.classList.remove('expanded');
- dropdownButton.textContent = '▼';
- valueElement.style.display = 'none';
- } else {
- item.classList.add('expanded');
- dropdownButton.textContent = '▲';
- valueElement.style.display = 'block';
- colorizeNumbersAndBooleans(valueElement);
- }
- };
- }
- function formatValue(value) {
- try {
- var parsedValue = JSON.parse(value);
- return JSON.stringify(parsedValue, null, 4);
- } catch (error) {
- return value;
- }
- }
- function colorizeNumbersAndBooleans(valueElement) {
- var text = valueElement.innerHTML;
- text = text.replace(/"(true|false)"/g, '<span style="color:#77D72F;">$1</span>');
- text = text.replace(/"([^"]*)"/g, '<span style="color: #77D72F;">"$1"</span>');
- text = text.replace(/\b(\d+(?:\.\d+)?)\b/g, '<span style="color: #f39c12;">$1</span>');
- valueElement.innerHTML = text;
- }
- document.body.appendChild(container);
- var toggleButton = document.createElement('button');
- toggleButton.style.position = 'fixed';
- toggleButton.style.top = '10px';
- toggleButton.style.left = '10px';
- toggleButton.style.padding = '10px';
- toggleButton.style.background = '#2b2b2b';
- toggleButton.style.border = '1px solid #555';
- toggleButton.style.borderRadius = '5px';
- toggleButton.style.zIndex = '9999';
- toggleButton.style.color = '#fff';
- toggleButton.style.fontFamily = 'Roboto, Arial, sans-serif';
- toggleButton.textContent = 'Toggle GUI';
- toggleButton.addEventListener('click', function () {
- if (container.style.display === 'none') {
- container.style.display = 'block';
- } else {
- container.style.display = 'none';
- }
- });
- document.body.appendChild(toggleButton);
- })();