Javascript 能否将此bookmarklet转换为Greasemonkey用户脚本?

Javascript 能否将此bookmarklet转换为Greasemonkey用户脚本?,javascript,bookmarklet,userscripts,Javascript,Bookmarklet,Userscripts,我不太确定如何将此代码从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,m

我不太确定如何将此代码从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技巧实现的。如果你将来需要这样做,你可以试试这个

这将为您提供以下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列出的每个地址上运行,因此,您可能需要考虑将按钮或某物注入相关页,以使其不必要地运行。

窗口。打开参数是语法错误。看来,+没有正确地从URL解码中继承:它现在应该是固定的。显示错误-异常:缺失;之前statement@adi很抱歉有更多的编码错误。现在应该可以了。