Как вы можете заменить цель ссылки в Greasemonkey? - PullRequest
4 голосов
/ 21 апреля 2010

Я пытаюсь написать скрипт в Greasemonkey, который заменит цель ссылки чем-то другим, но с моим ограниченным знанием Javascript я действительно не знаю, как это сделать.

В основном я пытаюсь найти все ссылки, содержащие определенную строку символов (например: // a [содержит (@href, 'xx')]), и либо заменить их другой ссылкой, либо добавить к ним что-нибудь (замена «abc123.com» на «zyx987.com» или «abc123.com» на «abc123.com/folder»).

Если бы вы могли указать мне правильный путь, я был бы очень признателен.

edit: это рабочий код на тот случай, если у кого-то возникнет такой же вопрос в будущем:

var links,thisLink;
links = document.evaluate("//a[contains(@href, 'roarrr')]",
    document,
    null,
    XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE,
    null);
for (var i=0;i<links.snapshotLength;i++) {
    var thisLink = links.snapshotItem(i);
    thisLink.href += 'test.html';
}

Ответы [ 2 ]

2 голосов
/ 21 апреля 2010
var links = document.evaluate("//a[contains(@href, 'roarrr')]", document, null, 
XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null); 
for (var i=0; i < links.snapshotLength; i++) 
{ 
  var thisLink = links.snapshotItem(i); 
  thisLink.href += 'test.html'; 
} 
1 голос
/ 21 апреля 2010

Вы получаете желаемый a элемент (ы) и устанавливаете их src следующим образом:

elem.src = 'http://example.com';

Вы также можете использовать предыдущее значение src:

elem.src += 'index.html';
...