使用xpath选择所有具有onclick的锚标签

时间:2015-04-06 20:01:32

标签: javascript html xpath

我想在使用XPATH定义为属性的'onClick'功能的网页上选择所有锚标签。 我定位的网页有这样的锚标签

<a href="status.php?op=del&amp;status_id=2" onclick="return confirm('Are you sure you want to delete this item?')">Delete</a>

经过大量搜索后,我发现了以下可能的解决方案,但似乎都没有。我试过(并且失败了)

//a[@onclick|@href]
//a[onclick]
//a[@onclick]
//a/@*[name()='onclick']
./*[onclick]  #this should have selected all nodes with onclick function

我也试过

//a/@onclick

但这只返回onclick函数定义,因为我想要整个锚标记。

问题:如何使用XPATH获取所有将onclick函数定义为属性的锚标记?

3 个答案:

答案 0 :(得分:1)

XPath //a[@onclick]应该有效。

尝试在浏览器的控制台中执行此操作以提醒每个锚:

(function(){
  var withOnclick = document.evaluate('//a[@onclick]', document, null, XPathResult.ORDERED_NODE_ITERATOR_TYPE, null);
  var anchor = withOnclick.iterateNext();
  while (anchor) {
    alert(anchor.outerHTML);
    anchor = withOnclick.iterateNext();
  }
}())

答案 1 :(得分:0)

$("a[onclick]")如果您正在使用jQuery,应该可以使用onclick查找所有锚点

答案 2 :(得分:0)

最后我能够使用

来做到这一点
//a[@onclick]

早些时候我在不正确的响应对象上应用它,因此无法获取链接。 要进一步添加,要获取'url'值,可以执行以下操作:

HtmlXPathSelector(response).select('//a[@onclick]/@href').extract()

这将返回属于锚点标记的所有链接的列表,其中“onclick”函数被定义为属性。

感谢您的回答。