如何使用javascript在页面上获取包含特定单词的链接
我正在尝试获取一个页面上包含单词的链接,并将其刷新到另一个页面上的bookmarklet中 以下是我无法为bookmarklet工作的代码:如何使用javascript在页面上获取包含特定单词的链接,javascript,bookmarklet,Javascript,Bookmarklet,我正在尝试获取一个页面上包含单词的链接,并将其刷新到另一个页面上的bookmarklet中 以下是我无法为bookmarklet工作的代码: javascript: for (i=0; i < document.links.length; i++) { if(document.links[i].href.match('exampleword')) { location.href = 'http://google.com/exampleword';
javascript:
for (i=0; i < document.links.length; i++) {
if(document.links[i].href.match('exampleword')) {
location.href = 'http://google.com/exampleword';
}
}
javascript:
对于(i=0;i
为什么这不起作用?您正在检查链接href是否包含该单词-从您的问题来看,它听起来更像是您想要锚文本(即您单击的单词)。最简单的方法(如果
包含其他标记,则不是100%准确)如下:
if (document.links[i].innerHTML.match('exampleword'))
格雷格敏锐地发现,你真正想要的是链接“标签”,而不是href URL。但是我会使用getElementsByTagName('A')获取所有元素。然后遍历它们的第一个子节点 获取“firstChild”的“节点值”与获取innerHTML或(innerText,有人提到过,但不太受支持)一样容易 下面是一个简单的示例,查找“word1”、“word2”和“word3” 我只想补充一点,如果您想将为此而查看的链接限制为页面或站点上链接的子集,您可以通过为要搜索的链接设置特定的类名,以其他方式进行区分。检查您获取的链接的类名只会使事情变得复杂一点。在此,一个简单的节点迭代: 例如:
<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>
JavaScript匹配链接标签
变量关键字=['word1','word2','word3'];
函数linklabels(){
var aels=document.getElementsByTagName&&document.getElementsByTagName('A');
var aelsCt=aels.length;
var关键字sct=关键字.length;
对于(变量i=0;i ||
搜索innerText | | textContent不是更好吗?哦,我明白了。那么我如何显示链接:location.href=document.links[I].href?很抱歉,我是javascriptUsing的新手,只要所有链接都标记一致,使用firstChild就可以了。在某些情况下,例如当您有嵌套的内联标记(等)时,最好使用innerText | | textContent捕获所有文本内容。@J-P,非常好。使用节点方法,我将修改上面的内容,在获取nodeValue之前,深入挖掘文本节点(nodeType 3)的每个标记元素的所有子元素。(幸运的是,我在后台构建并使用了一个能为我完成所有这些的函数。)谢谢!