Warning: fopen(/www/sites/update.greasyfork.icu/index/store/temp/cbd60cb2e031d7d6bb45657f2d0f93a1.js): failed to open stream: No space left on device in /www/sites/update.greasyfork.icu/index/scriptControl.php on line 65
// ==UserScript==
// @name 网站信息复制助手
// @namespace your-namespace
// @version 1.0
// @description 在浏览器右侧添加一个可拖拽的图标,点击后可以复制网站名称和链接
// @author Gibber1977
// @match *://*/*
// @grant GM_addStyle
// @grant GM_setClipboard
// @license MIT
// @downloadURL https://update.greasyfork.icu/scripts/532648/%E7%BD%91%E7%AB%99%E4%BF%A1%E6%81%AF%E5%A4%8D%E5%88%B6%E5%8A%A9%E6%89%8B.user.js
// @updateURL https://update.greasyfork.icu/scripts/532648/%E7%BD%91%E7%AB%99%E4%BF%A1%E6%81%AF%E5%A4%8D%E5%88%B6%E5%8A%A9%E6%89%8B.meta.js
// ==/UserScript==
(function() {
'use strict';
// 样式
GM_addStyle(`
#copyHelperIcon {
position: fixed;
top: 50%;
right: 0;
transform: translateY(-50%);
background-color: #eee;
border: 1px solid #ccc;
border-radius: 5px 0 0 5px;
padding: 10px;
cursor: grab;
opacity: 0.7;
z-index: 9999;
font-size: 16px;
line-height: 1;
}
#copyHelperIcon:hover {
opacity: 1;
}
#copyHelperMenu {
position: fixed;
top: 50%;
right: 40px; /* 稍微偏移,不与图标重叠 */
transform: translateY(-50%);
background-color: #fff;
border: 1px solid #ccc;
border-radius: 5px;
padding: 10px;
z-index: 10000;
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.2);
display: none; /* 初始隐藏 */
}
#copyHelperMenu button {
display: block;
width: 100%;
padding: 8px 10px;
margin-bottom: 5px;
border: none;
background-color: transparent;
text-align: left;
cursor: pointer;
border-bottom: 1px solid #eee;
}
#copyHelperMenu button:last-child {
border-bottom: none;
}
#copyHelperMenu button:hover {
background-color: #f0f0f0;
}
`);
// 创建图标元素
const copyHelperIcon = document.createElement('div');
copyHelperIcon.id = 'copyHelperIcon';
copyHelperIcon.innerText = '🔗'; // 使用网络链接图标
document.body.appendChild(copyHelperIcon);
// 创建菜单元素
const copyHelperMenu = document.createElement('div');
copyHelperMenu.id = 'copyHelperMenu';
document.body.appendChild(copyHelperMenu);
// 添加菜单选项
const copyNameButton = document.createElement('button');
copyNameButton.innerText = 'Copy Name';
copyNameButton.addEventListener('click', () => {
GM_setClipboard(document.title);
copyHelperMenu.style.display = 'none';
});
copyHelperMenu.appendChild(copyNameButton);
const copyLinkButton = document.createElement('button');
copyLinkButton.innerText = 'Copy Link';
copyLinkButton.addEventListener('click', () => {
GM_setClipboard(window.location.href);
copyHelperMenu.style.display = 'none';
});
copyHelperMenu.appendChild(copyLinkButton);
const copyNameAndLinkButton = document.createElement('button');
copyNameAndLinkButton.innerText = 'Copy Name & Link';
copyNameAndLinkButton.addEventListener('click', () => {
const text = `${document.title}\n${window.location.href}`;
GM_setClipboard(text);
copyHelperMenu.style.display = 'none';
});
copyHelperMenu.appendChild(copyNameAndLinkButton);
const copyMarkdownButton = document.createElement('button');
copyMarkdownButton.innerText = 'Copy Name & Link in Markdown';
copyMarkdownButton.addEventListener('click', () => {
const text = `[${document.title}](${window.location.href})`;
GM_setClipboard(text);
copyHelperMenu.style.display = 'none';
});
copyHelperMenu.appendChild(copyMarkdownButton);
// 添加更多你认为有必要的功能按钮
const copyAsHtmlButton = document.createElement('button');
copyAsHtmlButton.innerText = 'Copy as HTML Link';
copyAsHtmlButton.addEventListener('click', () => {
const text = `${document.title}`;
GM_setClipboard(text);
copyHelperMenu.style.display = 'none';
});
copyHelperMenu.appendChild(copyAsHtmlButton);
// 图标点击事件:显示/隐藏菜单
copyHelperIcon.addEventListener('click', () => {
copyHelperMenu.style.display = copyHelperMenu.style.display === 'none' ? 'block' : 'none';
});
// 实现图标的拖拽功能(垂直方向)
let isDragging = false;
let startY = 0;
let currentY = 0;
copyHelperIcon.addEventListener('mousedown', (e) => {
isDragging = true;
startY = e.clientY - copyHelperIcon.offsetTop;
copyHelperIcon.style.cursor = 'grabbing';
});
document.addEventListener('mousemove', (e) => {
if (!isDragging) return;
currentY = e.clientY - startY;
// 限制只能在垂直方向移动
copyHelperIcon.style.top = currentY + 'px';
copyHelperIcon.style.bottom = 'auto'; // 防止同时设置 top 和 bottom 导致冲突
});
document.addEventListener('mouseup', () => {
if (!isDragging) return;
isDragging = false;
copyHelperIcon.style.cursor = 'grab';
});
// 防止拖拽时选中文字
copyHelperIcon.addEventListener('dragstart', (e) => {
e.preventDefault();
});
})();