2010-03-17 3 views
1

Я хочу изменить внутреннюю веб-страницу, чтобы отбросить некоторые из поведения некоторых ссылок на onclick.В chrome с расширением greasemonkey, как я могу изменить конструкцию `<a...>`, чтобы вырезать атрибут 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 

ответ

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

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

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

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"); 
     } 
    } 
}