[TC] Нужен скрипт для firefox.

Доброго времени суток.
На странице есть несколько графических ссылок, у которых разные значения
параметра src. Вот пример одной из них:
тэг IMG имеет 4 параметров:
alt=Button
href=#
src=clickimages/7.gif
title=Button
MSAA Role=28
Нужен скрипт, который по нажатию клавиш делал бы следующее:
1. Находил графическую ссылку с параметром src=clickimages/4.gif.
2. Делал переход по найденной ссылке.
3. После активизации ссылки закрывал текущую вкладку. Данная возможность
желательна, но не обязательна.
Буду очень признателен за помощь в написании такого скрипта. Если для
firefox такое написать нельзя, то сойдёт и для IE.
Приветствую всех.
Иван пишет:
Было бы проще, если бы вы привели ссылку на страницу; без нее вам придется окончательный
вариант скрипта и его отладку делать самостоятельно.
Чтобы не было разночтений, уточню: в html нет графических ссылок как таковых.
Далее предполагается, что речь идет об элементах, обозначаемых тегом img.
Последнее , скорее всего, можно сделать эмуляцией нажатия соответствующей комбинации
клавиш (если не ошибаюсь в Firefox и IE6 -- это Ctrl+W).
Вот "универсальный" вариант для IE, в которой перебираются все указанные теги
и указанные атрибуты сравниваются с указанной строкой. Я оформил это дело в отдельную
функцию, которую удобно вызывать из скриптов и которой нужно передавать интересующие
вас значение тега, атрибута и строки.
Так можно на разные комбинации клавиш повесить щелчки по разным элементам с разными
атрибутами. В случае неудачи функция возвращает FALSE.
Кстати, в скриптах вы можете проверять адрес текущей страницы (см. GetDocumentPath)
и блокировать вызов функции на других страницах. Затем при помощи функций JAWS
для работы с ini-файлами создать базу страничек с указанием того, по какому элементу
и с каким атрибутом нужно щелкать, что позволить скрипту менять свое поведение
в зависимости от адреса загруженной страницы... Прикрутить еще запуск скрипта
через интервалы времени... Короче, есть простор для творчества :-)
int function clickMe (string ByRef sTagName, string ByRef sAttribute, string
ByRef sValue)
var
object oDoc, object oElems,
string sTemp,
int nCount, int nIdx
let oDoc = ie4GetCurrentDocument ()
let oElems= oDoc.getElementsByTagName(sTagName)
let nCount = oElems.length
if not nCount then
return FALSE
EndIf
let nIdx = 0
while nIdx < nCount
let sTemp= oElems(nIdx).getAttribute(sAttribute,0)
if 0 == StringCompare (sTemp, sValue, 0) then
oElems(nIdx).click()
return TRUE
endIf
let nIdx = nIdx+1
endWhile
return FALSE
endFunction
Для вашего случая вызов будет выглядеть так:
...
if clickMe("img", "src", "clickimages/4.gif") then
/* что-нибудь сообщаем и ждем какое-то время,
* нужное для загрузки страницы
*/
TypeKey("Control+W")
Pause()
endIf
...
Поскольку функция не изменяет входные параметры, то передаются они по ссылке
(by reference), что экономит время и память. И вы должны учитывать это обстоятельство,
если захотите изменить код функции так, чтобы воздействовать на входные параметры.
Успехов. Анатолий.