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);
})();