您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Retrieve spoilers for GPX files.
// ==UserScript== // @name Spoilers4gpx // @namespace https://www.geocaching.com // @description Retrieve spoilers for GPX files. // @include https://www.geocaching.com/geocache/* // @include https://www.geocaching.com/hide/report.aspx* // @grant GM_setValue // @grant GM_getValue // @grant GM_deleteValue // @version 1.1 // ==/UserScript== (function() { "use strict"; function getURLParameter(name) { return decodeURI( (new RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) || [, null])[1] ); } var elm = document.getElementById('ctl00_ContentBody_GeoNav_adminTools'); if (elm) { var newLink = document.createElement('a'), href = document.createAttribute('href'); href.nodeValue = '#'; newLink.setAttributeNode(href); var style = document.createAttribute('style'); style.nodeValue = 'background-image: url("http://spoilers4gpx.vaguelibre.net/spoilers4gpx.png");'; newLink.setAttributeNode(style); var newContent = document.createTextNode("Spoilers4Gpx"); newLink.appendChild(newContent); var newAdminTool = document.createElement("li"), attr = document.createAttribute("id"); attr.nodeValue = "Spoilers4Gpx"; newAdminTool.setAttributeNode(attr); newAdminTool.appendChild(newLink); elm.appendChild(newAdminTool); document.getElementById("Spoilers4Gpx").addEventListener('click', function(e) { var findSpoilers = /<a href="(https:\/\/img(?:cdn)?\.geocaching\.com[^.]+\.(jpg|jpeg|png|gif))"[^>]+>([^<]+)<\/a>/g, item = ['<!-- Spoiler4Gpx is a tool for include spoilers into GPX files. More info here: http://spoilers4gpx.vaguelibre.net -->'], list = '', edit_path = '', match; while (match = findSpoilers.exec(document.documentElement.innerHTML)) { item.push('<!-- Spoiler4Gpx [' + match[3] + '](' + match[1] + ') -->'); } if (item === '') { alert('No spoilers found :-('); e.preventDefault(); return false; } list = 'Here the code that will be added at the end of the long description, don\'t forget to remove pictures in the list aren\'t a spoiler.' + "\n\n"; list += item.join("\n"); list += "\n\n" + 'Do you want to go to the edit page and add this content now?' + "\n"; edit_path = 'https://www.geocaching.com' + elm.childNodes[3].childNodes[0].getAttribute("href") + '&s=spoilers4gpx#tbLongDesc'; if (confirm(list)) { GM_setValue('spoilers_html', item); window.location = edit_path; } e.preventDefault(); return false; }); } if (window.location.pathname.substr(1) === 'hide/report.aspx' && getURLParameter('s') === 'spoilers4gpx') { var chkIsHtml = document.getElementById('chkIsHtml'), chkUnderstand = document.getElementById('ctl00_ContentBody_chkUnderstand'), chkDisclaimer = document.getElementById('ctl00_ContentBody_chkDisclaimer'), spoilers_html = GM_getValue('spoilers_html'); if (typeof spoilers_html !== 'undefined') { var elmLongDesc = document.getElementById('tbLongDesc'); elmLongDesc.value += "\n" + spoilers_html.join("\n"); GM_deleteValue('spoilers_html'); } if (chkIsHtml && !chkIsHtml.checked) { chkIsHtml.checked = true; } if (chkUnderstand && !chkUnderstand.checked) { chkUnderstand.checked = true; } if (chkDisclaimer && !chkDisclaimer.checked) { chkDisclaimer.checked = true; } } }());