我正在寻找一个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');
});​


任何帮助将不胜感激。

最佳答案

DOMNodeInserted is deprecated.不再使用该方法。最好使用waitForKeyElements之类的实用程序。

之后,只需找到正确的图像jQuery selector,然后使用正确的正则表达式将src转换为较大图像尺寸的正则表达式即可。 (但请注意,某些站点故意使正则表达式无法实现。)

对于the sample RSS feed you listed,在inoreader.com上,我们可以use Firebug to determine a CSS/jQuery path到以下缩略图:

#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;
}

07-24 09:31