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

时间:2014-08-08 22:09:32

标签: javascript bookmarklet userscripts

我不太确定如何将此代码从书签转换为用户脚本,因为它使用了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);

想法?

1 个答案:

答案 0 :(得分:4)

首先,您必须将URL编码的字符转换为常规字符,Jared Farrish具有kindly done并具有一些PHP魔法。如果您将来需要这样做,可以试试online URL encoder/decoder

这给你这个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);

然后,剩下要做的就是使用用户说明,将其保存在名称以.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 列出的每个地址处运行,因此您可能需要考虑在相关网页上注入按钮或其他内容,以便它不会不必要地运行。