Greasemonkey - Найти ссылку и добавить другую ссылку - PullRequest
1 голос
/ 21 декабря 2011

У нас есть внутренний инвентарь на работе, который основан на сети.Я смотрю добавить ссылку, скажем, под ссылкой на странице.Для меня нет идентификатора или классов.Каждая ссылка хотя бы на то, что я хочу добавить что-то под ней, начинается с NFD.Мне нужно извлечь текст ссылки (а не сам текст ссылки, отображаемый для конечного пользователя) и использовать его в своем URL-адресе для вызова веб-адреса для удаленного доступа.

var links = document.evaluate("//a[contains(@href, 'NFD')]", document, null, 
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 
for (var i=0; i < links.snapshotLength; i++) 
{ 
  var thisLink = links.snapshotItem(i); 
  newElement = document.createElement("p");
  newElement = innerHTML = '&nbsp;&nbsp;<a href="' + url + '">Remote</a>';
  thisLink.parentNode.insertBefore(newElement, thisLink.nextSibling);
  //thisLink.href += 'test.html'; 
} 

Редактировать:

Что я в основном ищу, так это то, что у меня есть ссылка <a href="http://blargh.tld/Search-Computer.asp?Computer=NFDM0026">NFDM0026</a> Сейчас я хочу добавить ссылку ниже, используя текст внутри калиток, поэтому я хочу, чтобы NFDM0026 создал пользовательскую ссылку для вызова URL, используя эту ссылку.,Как сказать, зритель VNC.NFDM0026 меняет курс на разные имена.

1 Ответ

2 голосов
/ 21 декабря 2011

Вот как сделать то, что вы хотите (без jQuery ; рассмотрите возможность добавления этой замечательной библиотеки):

//--- Note that content search is case-sensitive.
var links = document.querySelectorAll ("a[href*='NFD']");

for (var J = links.length-1;  J >= 0; --J) { 
    var thisLink            = links[J]; 
    var newElement          = document.createElement ("p");
    var newURL              = thisLink.textContent.trim ();
    newURL                  = 'http://YOUR_SITE/YOUR_URL/foo.asp?bar=' + newURL;
    newElement.innerHTML    = '&nbsp;&nbsp;<a href="' + newURL + '">Remote</a>';

    InsertNodeAfter (newElement, thisLink);
} 

function InsertNodeAfter (newElement, targetElement) {
    var parent  = targetElement.parentNode;
    if (parent.lastChild == targetElement)
        parent.appendChild  (newElement);
    else
        parent.insertBefore (newElement, targetElement.nextSibling);
}
...