如何在页面上获得带有javascript的特定单词的链接

时间:2009-05-21 07:26:23

标签: javascript bookmarklet

我正在尝试在页面上获取包含单词的链接并将其刷新到另一页面。

以下是我没有为书签工作的代码:

   javascript:
        for (i=0; i < document.links.length; i++) {
     if(document.links[i].href.match('exampleword')) {
    location.href = 'http://google.com/exampleword'; 
}
}

为什么这不起作用?

2 个答案:

答案 0 :(得分:2)

Greg很清楚你真的想要链接“ label ”,而不是href网址。但我会用 getElementsByTagName('A') 抓取所有元素。然后遍历 firstChild 节点。

获取' firstChild '的' nodeValue '同样容易,因为它是获取innerHTML或(innerText,有人提到,支持较少)。

这是一个最小的例子,寻找'word1','word2'和'word3'。

我只想补充一点,如果您想将链接的链接限制为页面或网站上的链接子集,您可以通过将特定的className设置为您想要的链接来区分其他方式。搜索。这会使问题复杂化,以检查您抓取的链接的className。这里,一个简单的A Node迭代:

实施例

<html>
<head>
<title>JavaScript match link label</title>
<script type="text/javascript">
var keywords = ['word1','word2','word3'];
function linklabels() {
    var aels = document.getElementsByTagName && document.getElementsByTagName('A');
    var aelsCt = aels.length;
    var keywordsCt = keywords.length;
    for (var i = 0; i < aels.length; i++) {
        var v= aels[i].firstChild.nodeValue;
            //this is the link label, the text seen as the link
        for (var j=0; j < keywordsCt; j++) {
            var re = new RegExp(keywords[j]); 
            if (re.test(v)) {
                alert('refreshing to http://google.com/' + v);
                //window.location.href = "http://google.com/" + v;
            }
        }
    }
}
window.onload=linklabels;
</script>
</head>
<body>
<p><a href="#">word1</a> | <a href="#">word2</a> | <a href="#">word3</a>
<br /><a href="#">word1</a> | <a href="#">word2</a> | <a href="#">word3</a></p>
</body>
</html>

答案 1 :(得分:1)

您正在检查链接href是否包含单词 - 从您的问题来看,它听起来更像是您想要的锚文本(即您单击的单词)。最简单的方法(如果<a>包含其他标签,则不是100%准确)是这样的:

if (document.links[i].innerHTML.match('exampleword'))