В chrome с расширением greasemonkey, как я могу изменить конструкцию `<a ...>`, чтобы удалить атрибут onclick =? - PullRequest
1 голос
/ 17 марта 2010

Я хочу изменить внутреннюю веб-страницу, чтобы удалить некоторые из 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 ]

1 голос
/ 19 марта 2010

Вместо document.getElementByTagName("a") вы также можете использовать document.links, о котором вы можете прочитать здесь .

Итак, чтобы изменить код Росса Роджерса:

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");
      }
  }
}
1 голос
/ 18 марта 2010

После нахождения этого сценария следующий код можно поместить в файл, заканчивающийся .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");
        }
    }
} 
...