🏠 返回首頁 

reddit context menu options

Adds links for reddit-stream, snoopsnoo, and "copy link with context" to reddit


Install this script?
// ==UserScript==
// @name        reddit context menu options
// @description Adds links for reddit-stream, snoopsnoo, and "copy link with context" to reddit
// @namespace   org.stevenhoward
// @include     https://www.reddit.com/*
// @version     1
// @grant       GM_setClipboard
// ==/UserScript==
// jshint esversion: 6
function createMenu (parent, actions) {
function randomId() {
return Math.random().toString(36).replace(/[^a-z]+/g, '');
}
let id = randomId();
let menu = document.createElement('menu');
menu.id = id;
menu.type = 'context';
for (let action in actions) {
let item = document.createElement('menuItem');
item.label = action;
item.onclick = actions[action];
menu.appendChild(item);
}
parent.parentNode.appendChild(menu);
parent.setAttribute('contextMenu', id);
}
function attachRedditStreamCommand(thing) {
let streamLink = thing.href.replace(/reddit/, 'reddit-stream');
createMenu(thing, {
'open in reddit-stream': () => window.location = streamLink,
'open in reddit-stream (new tab)': () => window.open(streamLink)
});
}
function attachCopyContextCommand(thing) {
let contextLink = thing.href + '?context=3';
createMenu(thing, { 'Copy link with context': () => GM_setClipboard(contextLink) });
}
function attachSnoopSnooCommand(thing) {
let user = thing.href.match('[^/]+$');
if (user) {
user = user[0];
let snoopUrl = `http://snoopsnoo.com/u/${user}`;
createMenu(thing, { 'SnoopSnoo': () => window.open(snoopUrl) });
}
}
function findAndAttach(attachFn, selector, childSelector) {
for (let node of document.querySelectorAll(selector)) {
attachFn(node);
}
}
findAndAttach(attachRedditStreamCommand, '.link a.title');
findAndAttach(attachCopyContextCommand, '.comment .bylink');
findAndAttach(attachSnoopSnooCommand, 'a.author, a[href^="/u/"]');