这个书签可以转换为Greasemonkey用户脚本吗?

Can this bookmarklet be converted to Greasemonkey userscript?

本文关键字:用户 Greasemonkey 脚本 转换 书签      更新时间:2023-09-26

我不太确定如何将这段代码从bookmarklet转换为userscript,因为它使用url编码的字符:

javascript:var%20multiURL="";%20$('div.titlebox').find('ul.subreddits').find('a').each(function()%20{%20multiURL%20+=%20$(this).text().substr(3)%20+%20"+";%20});%20multiURL%20=%20multiURL.substr(0,multiURL.length-1);%20window.open('http://www.reddit.com/r/'+multiURL);void(0);

想法?

首先,您必须将url编码的字符转换为常规字符,Jared Farrish已经使用了一些PHP魔法完成了这项工作。如果你将来需要这样做,你可以尝试这个在线URL编码器/解码器。

就是这个JavaScript blob:

javascript:var multiURL=""; $('div.titlebox').find('ul.subreddits').find('a').each(function() { multiURL += $(this).text().substr(3) + "+"; }); multiURL = multiURL.substr(0,multiURL.length-1); window.open('http://www.reddit.com/r/'+multiURL);void(0);

格式化并转换为合适的JS:

var multiURL = "";
$('div.titlebox').find('ul.subreddits').find('a').each(function () {
    multiURL += $(this).text().substr(3) + "+";
});
multiURL = multiURL.substr(0, multiURL.length - 1);
window.open('http://www.reddit.com/r/' + multiURL);

然后,剩下要做的就是使用userscript符号和将其保存在以.user.js (重要)结尾的文件中。

// ==UserScript==
// @name           Author's Name
// @namespace      Place where file is stored
// @include        Place(s) where userscript should run
// ==/UserScript==
var multiURL = "";
$('div.titlebox').find('ul.subreddits').find('a').each(function () {
    multiURL += $(this).text().substr(3) + "+";
});
multiURL = multiURL.substr(0, multiURL.length - 1);
window.open('http://www.reddit.com/r/' + multiURL);

值得注意的是,这将运行在每个地址列出@include ,所以你可能要考虑注入一个按钮或其他东西到相关页面,这样它就不会运行不必要的