我的Greasemonkey脚本如何找到具有特定模式的链接?

时间:2013-01-24 22:45:45

标签: javascript html hyperlink greasemonkey

我的目标网页包含以下链接:

http://example.com/ref.php?564646 

数字不同。

如何找到这些链接并使用Greasemonkey脚本在页面顶部显示这些链接?

1 个答案:

答案 0 :(得分:2)

要搜索链接href的任意模式,请使用 jQuery 正则表达式(RegEx)的强大功能。

然后使用jQuery添加克隆的链接并使用GM_addStyle()来定位和设置所有内容。

这是显示流程的完整脚本。您还可以see the code in action at jsFiddle.

// ==UserScript==
// @name     Use jQuery and RegEx to match arbitrary links
// @include  http://YOUR_SERVER.COM/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==

//--- Add a custom, regex-aware href selector
jQuery.extend (
    jQuery.expr[':'].hrefMatch = function (elem, J, Mtch, candidateNodeArry) {
        if (elem.hasAttribute ("href") ) {
            var zRegExp = new RegExp (Mtch[3], 'i');

            return zRegExp.test (elem.href);
        }

        return false;
    }
);

//-- Find links that match "ref.php?{some integer}"
matchedLinks = $("a:hrefMatch('ref\\.php\\?\\d+(?!\\w)')");

//-- Now add the links to the top of the page.
$("body").append ('<div id="gmMatchedLinks"></div>');
matchedLinks.clone (true, false). appendTo ("#gmMatchedLinks");

//-- Position the new links and style to taste.
GM_addStyle ( "                                 \
    #gmMatchedLinks a {                         \
        margin-right: 2em;                      \
    }                                           \
    #gmMatchedLinks {                           \
        position:   fixed;                      \
        top:        0px;                        \
        left:       0px;                        \
        background: orange;                     \
        padding:    1em;                        \
        z-index:    555;                        \
    }                                           \
" );