85 lines
2.5 KiB
JavaScript
85 lines
2.5 KiB
JavaScript
|
|
// ==UserScript==
|
|
// @name HTML Source Copier
|
|
// @namespace http://tampermonkey.net/
|
|
// @version 1.0
|
|
// @description 为网页添加按钮以复制完整HTML源码
|
|
// @author YourName
|
|
// @match *://*/*
|
|
// @grant GM_setClipboard
|
|
// ==/UserScript==
|
|
|
|
(function() {
|
|
'use strict';
|
|
|
|
// 创建按钮样式
|
|
const style = document.createElement('style');
|
|
style.textContent = `
|
|
.html-copy-btn {
|
|
position: fixed;
|
|
bottom: 20px;
|
|
right: 20px;
|
|
z-index: 9999;
|
|
padding: 10px 15px;
|
|
background: linear-gradient(135deg, #6e8efb, #a777e3);
|
|
color: white;
|
|
border: none;
|
|
border-radius: 50px;
|
|
cursor: pointer;
|
|
font-weight: bold;
|
|
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
|
|
transition: all 0.3s ease;
|
|
}
|
|
.html-copy-btn:hover {
|
|
transform: translateY(-3px);
|
|
box-shadow: 0 6px 20px rgba(0,0,0,0.25);
|
|
}
|
|
.html-copy-btn:active {
|
|
transform: translateY(1px);
|
|
}
|
|
.copy-notification {
|
|
position: fixed;
|
|
bottom: 70px;
|
|
right: 20px;
|
|
background: rgba(0,0,0,0.7);
|
|
color: white;
|
|
padding: 10px 15px;
|
|
border-radius: 5px;
|
|
opacity: 0;
|
|
transition: opacity 0.3s;
|
|
}
|
|
`;
|
|
document.head.appendChild(style);
|
|
|
|
// 创建按钮元素
|
|
const btn = document.createElement('button');
|
|
btn.className = 'html-copy-btn';
|
|
btn.textContent = 'Copy HTML';
|
|
document.body.appendChild(btn);
|
|
|
|
// 创建通知元素
|
|
const notification = document.createElement('div');
|
|
notification.className = 'copy-notification';
|
|
document.body.appendChild(notification);
|
|
|
|
// 按钮点击事件
|
|
btn.addEventListener('click', function() {
|
|
const html = document.documentElement.outerHTML;
|
|
GM_setClipboard(html, 'text')
|
|
.then(() => {
|
|
notification.textContent = 'HTML copied to clipboard!';
|
|
notification.style.opacity = '1';
|
|
setTimeout(() => {
|
|
notification.style.opacity = '0';
|
|
}, 2000);
|
|
})
|
|
.catch(err => {
|
|
notification.textContent = 'Copy failed: ' + err;
|
|
notification.style.opacity = '1';
|
|
setTimeout(() => {
|
|
notification.style.opacity = '0';
|
|
}, 3000);
|
|
});
|
|
});
|
|
})();
|