// ==UserScript== // @name NSnapshot // @namespace http://www.nodeseek.com/ // @version 0.1-beta // @description 适用于NodeSeek的网页快照,保存当前网页状态 // @author dabao // @match *://*.nodeseek.com/* // @connect cfn.pp.ua // @icon data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAQAAADZc7J/AAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAACz0lEQVR4Ae3B32tVdQAA8M85u7aVHObmzJVD0+ssiphstLEM62CBlCBEIAYhUoGGD/kiRUo+9CIEElFZgZJFSApBVhCUX2WFrVQKf5Qy26SgdK4pN7eZu+cbtyfJ/gLx83HD9SAhlEyXupiPhUSTeonRfNw1ws2aRJeN5jHcolFhJJ9M8Zj99piDTnv12SjzfzIb9dmrC7Pttt8ykjDVLsu8ZZ1GH1oqeDofJLtJh4fMEw3Y72jlCuEO2+W+sNJFr3vOZ1YIi8NIGA29hDWhGgZDJ2Rt2ZvZSBazmMUsZsPZ1qwVQmcYDNWwhtAbRsNIWJx6WLPDfgxNVkm9nR8hm+XduLba7F9RtcXztmUzyY/YJrUqNPvBYc0eSS3CwXxMl4WG7CarsyEuvU2HOkRNujSw3PosxR6DFurKxx3E/akFohPo0aDfEO61os5LdrtLVWG1TzxokifdiSH9GnTjuGhBqsWE39GOo3kVi8wsmeVW00SJ200zA9r0kFcdQzv+MKElVW/S+L5EE86pmUth3BV/SzCOCUjMVXMWzfsSYybVl1SlSlESkagpuOI1nzshFX1gyAF1UKhJEKOkJFVNXVBv+pJoBK1qBkh86z1/SaR+9o5zEgoDaloxsiSart6F1Bkl83ESHWEKvvEbqZJETaokgSH9hCk6cBLtSs6kDqEb/cZ0K+MnO0X/VdhRGUBZjzH9uA+HUl+a0BvmO+J7bVZSKWz1kehqhfe9oWalNoccDmW9JnyV+toxsy3PK3aY9Gx4gMp567ziV4WawpCXra+MEhZ5xqTtecVycxzXlxA22OK4ZYbt9LjvrM5PkNUp6zVPdNpBv1QKwt126Paxp8zwqXu8kG8pYZdHlT2Rvxo2aVG2ObyYn65UnXLKVULZZrP02ZRfCms1OmAXCSHRYqrLzuZFaDFV6s/8omuERs0Kl/LzITVTvTHDeXTD9eAftAsSYhXYOWUAAAAASUVORK5CYII= // @grant GM_xmlhttpRequest // @grant GM_openInTab // @grant GM_registerMenuCommand // @noframes // @run-at document-end // @license GPL-3.0 License // @downloadURL https://update.greasyfork.icu/scripts/535300/NSnapshot.user.js // @updateURL https://update.greasyfork.icu/scripts/535300/NSnapshot.meta.js // ==/UserScript== /** * 更新日志: * v0.1-beta (2025-05-08) * - 实现基本的网页快照功能 * - 添加DOM处理功能,优化快照内容 * - 添加"查看当前页快照"菜单项 * - 优化URL格式和配置结构 */ (function() { 'use strict'; // 配置参数 const config = { // Cloudflare Worker配置 workerBase: 'https://nsnapshot.cfn.pp.ua', // Worker完整域名(包含https://) previewPath: '/preview', // 预览路径 // 按钮样式 buttonStyle: ` position: fixed; top: 50px; right: 20px; z-index: 9999; ` }; // 添加快照按钮 function addSnapshotButton() { const button = document.createElement('button'); button.textContent = '网页快照'; button.id = 'webpage-snapshot-btn'; button.className = 'btn'; button.style.cssText = config.buttonStyle; button.addEventListener('click', takeSnapshot); document.body.appendChild(button); } // 生成快照 async function takeSnapshot() { try { // 显示加载状态 const snapshotBtn = document.getElementById('webpage-snapshot-btn'); const originalText = snapshotBtn.textContent; snapshotBtn.textContent = '生成中...'; snapshotBtn.disabled = true; // 创建隐藏的iframe来加载当前页面 const iframe = document.createElement('iframe'); iframe.style.display = 'none'; document.body.appendChild(iframe); // 等待iframe加载完成 await new Promise(resolve => { iframe.onload = resolve; iframe.src = window.location.href; }); // 获取iframe中的HTML内容 const iframeDoc = iframe.contentDocument || iframe.contentWindow.document; // 处理特定的DOM元素 try { // 查找id="nsk-right-panel-container"的div元素 const rightPanelContainer = iframeDoc.getElementById('nsk-right-panel-container'); if (rightPanelContainer) { // 查找class="user-card"的子元素 const userCardElement = rightPanelContainer.querySelector('.user-card'); if (userCardElement) { // 获取user-card元素后的下一个兄弟元素 const nextSibling = userCardElement.nextElementSibling; // 移除user-card元素 userCardElement.remove(); // 如果存在下一个兄弟元素,也移除它 if (nextSibling) { nextSibling.remove(); } // 创建新的登录/注册面板 const loginPanel = document.createElement('div'); loginPanel.className = 'nsk-panel'; loginPanel.innerHTML = `