NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Amazon URL Shortener // @namespace http://littlefinix.net/ // @version 0.9 // @updateURL https://openuserjs.org/meta/Littlefinix/Amazon_URL_Shortener.meta.js // @description Adds an option for amazon to copy a shortened link to the clipboard, available under 'Share'. // @author Littlefinix // @include /^https?:\/\/(www.|smile.)?amazon.*\/[a-z]p\/.*/ // @grant GM_setClipboard // @license MIT // @sandbox DOM // ==/UserScript== var isCopyInfoOpen = false; (function () { 'use strict'; var container = document.querySelector("#ask_feature_div"); if (!container) container = document.querySelector("#bylineInfo_feature_div"); if (!container) container = document.querySelector("#addToCart"); if (!container) { console.error("failed to find appropriate container"); return; } console.log("container:", container); var info = document.createElement("div"); info.innerHTML = "<span style=\"background: limegreen; color: white; padding: 0.5em;\">Copied Successfully!</span>"; var link = document.createElement("a"); link.innerText = "Copy URL"; link.onclick = function (e) { var matches = /((?:.*)amazon(?:.[a-z]{2,})+)\/(?:.*)?([a-z]p)\/(?:product\/)?([^\/\?&]+)(?:.*|$)/.exec(document.URL); if (matches === null) { alert("Could not copy link.\nYou may need to update the script"); return; } var scroll = window.scrollY; var txt = document.createElement("textarea"); document.body.appendChild(txt); txt.innerText = matches[1] + "/dp/" + matches[3]; txt.select(); if (!document.execCommand('copy')) { prompt("Could not copy to clipboard!\nPlease copy manually:", txt.innerText); } txt.parentElement.removeChild(txt); window.scrollTo(window.scrollX, scroll); //console.log(GM_setClipboard(matches[1] + "/dp/" + matches[3], "text")); if (isCopyInfoOpen) return; isCopyInfoOpen = true; container.append(info); setTimeout(function () { isCopyInfoOpen = false; info.parentElement.removeChild(info); }, 1000); }; var pipe = document.createElement("span"); pipe.textContent = '|'; pipe.classList.add('askPipe'); container.append(pipe); container.append(link); })();