1

我正在寻找创建一个 Greasemonkey 脚本来替换 InoReader 或任何其他 RSS 阅读器中的 Facebook 缩略图。以前我已经在 Google Reader 中成功使用了下面的脚本,但它在 InoReader、Feedly 或任何非 Google RSS Reader 中都不起作用。

// ==UserScript==
// @id             greader-facebookurlreplacer
// @name           Google Reader - Facebook URL Replacer
// @version        1.1
// @namespace      
// @author         
// @description    
// @include        https://www.google.com/reader/*
// @include        https://www.feedspot.com/*
// ==/UserScript==

document.getElementById("chrome").addEventListener("DOMNodeInserted", function (e) {
if (e.target.tagName && e.target.tagName == "DIV" && /entry\s?/.test(e.target.className)) {
    var t = e.target.getElementsByTagName("img");
    for (var n in t) {
        var r = t[n];
        if (/.*akamaihd\.net.*_s\.\w+$/.test(r.src)) {
            r.style.width = r.style.height = "inherit";
            r.src = r.src.replace(/_s\.(\w+)$/, "_n.$1")
        }
    }
}
}, false)

我还尝试使用从 stackoverflow 上的类似帖子中检索到的以下代码,但它在 InoReader 中也不起作用。

$("img[src^='https://fbcdn-photos-a.akamaihd.net']")
.each(function()
{ 
  this.src = this.src.replace(/(\/[^/]*)s\.jpg$/, '/s720x720$1n.jpg');
});​

任何帮助将不胜感激。

4

1 回答 1

1

DOMNodeInserted已弃用。 不要再使用这种方法了。最好使用waitForKeyElements 之类的实用程序。

之后,只需为图像找到正确的jQuery 选择器,然后找到正确的正则表达式来将其转换src为更大图像大小的选择器。(但请注意,有些网站故意使正则表达式方法不可能。)

对于您列出的示例 RSS 提要,在inoreader.com上,我们可以使用 Firebug 确定指向以下缩略图的 CSS/jQuery 路径:

#reader_pane div.article_full_contents div.article_content a.underlink img

有关src更改/正则表达式,请参阅代码。

以下是在该阅读器上替换该提要的图像的方法:

// ==UserScript==
// @name     _InoReader thumbnail replacer
// @include  http://www.inoreader.com/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/
waitForKeyElements (
    "#reader_pane div.article_full_contents div.article_content a.underlink img",
    swapOutFbcdnThumnails
);

function swapOutFbcdnThumnails (jNode) {
    /*-- Change src from:
        https://fbcdn-photos- ... _s.jpg
        to:
        https://fbcdn-sphotos- ... _n.jpg
    */
    var newSrc      = jNode[0].src.replace (/fbcdn\-photos\-/, "fbcdn-sphotos-");
    newSrc          = newSrc.replace (/_s\.jpg$/, "_n.jpg");
    jNode[0].src    = newSrc;
}
于 2013-07-02T10:52:11.343 回答