在带有greasemonkey扩展的chrome中,如何修改`<a ...>`构造来去除onclick =属性?</a ...>

时间:2010-03-17 20:33:55

标签: javascript google-chrome greasemonkey

我想修改内部网页,以消除某些链接的某些onclick行为。

内部网页有很多链接,如:

<a href="/slm/detail/ar/3116370" onclick="rallyPorthole.showDetail('/ar/view.sp','3116370','pj/b');return false;">foo de fa fa</a>

如何对Chrome进行扩展,以便执行以下操作:

for link in all_links:
    if link's href attribute matches '/slm/detail/ar/...':
        remove the onclick attribute

2 个答案:

答案 0 :(得分:1)

找到this script后,可将以下代码放入以.user.js结尾的文件中,并安装在Firefox或Chrome中。

// ==UserScript==
// @name          Rally Onclick Nuke
// @namespace     http://diveintogreasemonkey.org/download/
// @description   Nukes the "onclick" attribute from user story links so you can CTRL click a link and have it open in a new tab
// @include       https://*rally.sp
// ==/UserScript==

var links = document.getElementsByTagName("a");
for (i = 0; i < links.length; i++) {
  var node = links[i];
    var link = node.getAttribute("href");
    if (link && link.indexOf("slm/detail/ar/") > -1 ) {
        if (node.getAttribute("onclick")) {
          node.removeAttribute("onclick");
        }
    }
} 

答案 1 :(得分:1)

您可以使用document.getElementByTagName("a")而不是document.links,而您可以阅读here

所以修改Ross Rogers的代码:

var node, links = document.links;
for (var i = 0; node = links[i]; i++) {
  if (node.indexOf("slm/detail/ar/") > -1 ) {
      if (node.getAttribute("onclick")) {
        node.removeAttribute("onclick");
      }
  }
}