在Google Maps上添加一个按钮,直接将当前路径发送到Route2TXT
// ==UserScript==
// @name R2T Add-on
// @namespace http://tampermonkey.net/
// @version 1.2.2
// @description 在Google Maps上添加一个按钮,直接将当前路径发送到Route2TXT
// @author Kai
// @match *://*.google.com/maps*
// @match *://*.google.*/*map*
// @match *://*.google.*.*/*map*
// @match *://*.google.com.hk/*map*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
let childWindow = null;
function sendMessageToChild(message) {
if (childWindow) {
childWindow.postMessage(message, 'https://r2t.h0.work/');
console.log("Sent");
}
}
function createButton(targetContainer) {
// 检查是否已经插入按钮
if (targetContainer.querySelector('.custom-arrow-button')) return;
// 创建新的按钮元素
const newButton = document.createElement('button');
newButton.className = 'J45yZc custom-arrow-button'; // 添加标识类,避免重复插入
newButton.setAttribute('aria-label', '新しいボタン');
newButton.setAttribute('jsaction', 'click:newButtonClick');
// 创建新的图标 (SVG)
const svgIcon = document.createElementNS('http://www.w3.org/2000/svg', 'svg');
svgIcon.setAttribute('t', '1734341356088');
svgIcon.setAttribute('class', 'icon');
svgIcon.setAttribute('viewBox', '0 0 1024 1024');
svgIcon.setAttribute('version', '1.1');
svgIcon.setAttribute('xmlns', 'http://www.w3.org/2000/svg');
svgIcon.setAttribute('p-id', '2495');
svgIcon.setAttribute('width', '21');
svgIcon.setAttribute('height', '21');
const path = document.createElementNS('http://www.w3.org/2000/svg', 'path');
path.setAttribute('d', 'M832 640h-192c-35.2 0-64-28.8-64-64s28.8-64 64-64h192s192-214 192-320-86-192-192-192-192 86-192 192c0 51 44.4 126.8 90.6 192H640c-105.8 0-192 86.2-192 192s86.2 192 192 192h192c35.2 0 64 28.8 64 64s-28.8 64-64 64H371c-32 49.6-67.6 95.4-94.6 128H832c105.8 0 192-86.2 192-192s-86.2-192-192-192z m0-512c35.4 0 64 28.6 64 64s-28.6 64-64 64-64-28.6-64-64 28.6-64 64-64zM192 512c-106 0-192 86-192 192s192 320 192 320 192-214 192-320-86-192-192-192z m0 256c-35.4 0-64-28.6-64-64s28.6-64 64-64 64 28.6 64 64-28.6 64-64 64z');
path.setAttribute('p-id', '2496');
svgIcon.appendChild(path);
newButton.appendChild(svgIcon);
// 为按钮添加点击事件
newButton.addEventListener('click', function() {
// 检查子窗口是否已经打开
if (!childWindow || childWindow.closed) {
childWindow = window.open('https://r2t.h0.work/', '_blank');
} else {
childWindow.focus();
}
// 模拟 Ctrl+A 并复制当前所有文本
const allText = document.body.innerText; // 获取当前页面的所有文本
// 延迟 0.5 秒发送文本到子窗口
setTimeout(() => {
sendMessageToChild(allText);
}, 500);
});
// 将按钮插入到目标容器
const firstButton = targetContainer.firstChild;
targetContainer.insertBefore(newButton, firstButton);
}
// 使用 MutationObserver 监控 DOM 变化
function observeDOM() {
const observer = new MutationObserver(() => {
const targetContainer = document.querySelector('.MyVbZc.Hk4XGb');
if (targetContainer) {
createButton(targetContainer);
}
});
observer.observe(document.body, {
childList: true,
subtree: true,
});
}
// 启动观察器
observeDOM();
})();