【问题标题】:Can this bookmarklet be converted to Greasemonkey userscript? [closed]这个书签可以转换为 Greasemonkey 用户脚本吗? [关闭]
【发布时间】:2014-08-08 22:09:31
【问题描述】:

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

想法?

【问题讨论】:

标签: javascript bookmarklet userscripts


【解决方案1】:

首先,您必须将 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 列出的每个地址上运行,因此您可能需要考虑在相关页面上注入按钮或其他内容,以免不必要地运行。

【讨论】:

  • window.open() 参数是语法错误。
  • 看来+ 没有从 URL 解码中正确继承:现在应该修复。
  • 显示错误 - 异常:缺失;声明之前
  • @adi 对不起;有更多的编码错误。它现在应该可以工作了。
猜你喜欢
  • 1970-01-01
  • 2012-11-29
  • 1970-01-01
  • 1970-01-01
  • 2015-12-21
  • 1970-01-01
  • 1970-01-01
  • 2013-02-27
  • 1970-01-01
相关资源
最近更新 更多