#image #replace #hyperlink #greasemonkey
#изображение #заменить #гиперссылка #greasemonkey
Вопрос:
Я пробовал несколько разных способов поиска строк в таблице, столбцы которой содержат определенную ссылку.
Моя цель: заменить значок, когда ссылка на xyz находится в той же строке, что и изображение.
Пока это мой фрагмент:
var rows = document.getElementsByTagName("tr");
for(var i = rows.length - 1; i >= 0; i--) {
var links = rows[i].getElementsByTagName("a");
for(var k = links.length - k; k >= 0; k--) {
if (links[k].href =="http://www.XXXX.net/forum/index.php?showforum=121"){
var images = rows[i].getElementsByTagName("img");
for (var j=0;j<images.length;j ) {
images[j].src = "http://www.XXXX.net/forum/folder_post_icons/icon7.gif";
}
}
}
}
Я почти уверен, что это на самом деле не лучшая концепция. Но, как вы могли видеть, я пытаюсь искать ссылки во всех строках, и как только ссылка на форум «121» найдена, я пытаюсь заменить все изображения в этой конкретной строке.
Что я получаю, так это то, что каждое изображение на сайте заменяется.
Ответ №1:
Поскольку это достаточно просто, вот полный скрипт, который это делает.
Он использует jQuery, и вот удобная ссылка на jQuery. Смотрите, в частности, раздел «Селекторы» (которые почти такие же, как селекторы CSS).
Re: "What I get is every image at the site getting replaced."
…
Возможно, это потому, что критерии поиска слишком широкие. Если это плохо оформленная страница (использует табличные макеты), каждое изображение может находиться в строке таблицы с целевой ссылкой!
При публикации вопросов Greasemonkey ссылайтесь на целевую страницу или, как минимум, размещайте достаточное количество HTML-кода страницы, чтобы мы могли настроить скрипт GM в соответствии с ним.
В любом случае, это сработает, возможно, до получения дополнительной информации о целевой странице:
// ==UserScript==
// @name _Replace image on custom-targeted row
// @include http://www.XXXX.net/forum/*
// @require http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js
// ==/UserScript==
//--- This may need tuning based on information not provided!
var targetLinks = $("tr a[href*='showforum=121']");
//--- Loop through the links and rewrite images that are in the same row.
targetLinks.each ( function () {
//--- This next assumes that the link is a direct child of tr > td.
var thisRow = $(this).parent ().parent ();
//--- This may need tuning based on information not provided!
var images = thisRow.find ("td img");
//--- Replace all target images in the current row.
images.each ( function () {
$(this).attr (
'src',
'http://www.XXXX.net/forum/folder_post_icons/icon7.gif'
);
} );
} );
Комментарии:
1. Спасибо, раздел форума, для которого я это сделал, скрыт, но в следующий раз я постараюсь предоставить более подробную информацию о сайте. Мне пришлось немного расширить код 🙂