У меня есть следующий тег привязки, который содержит динамически генерируемые аргументы arg1,...,arg5
для функции JavaScript foo()
, которая выполняется на стороне веб-сайта.На рассматриваемой странице есть несколько таких тегов привязки с уникальными значениями id
и argN
:
<a href="#" id="foo1234567890" onclick="javascript:foo(arg1,arg2,arg3,arg4,arg5);return false;" target="_self" title="foobarbaz"> blah </a>
. Я бы хотел программно запустить функцию foo()
, циклически повторяя все обращениядля этого элемента, поиск аргументов и передача этих аргументов в вызов unsafeWindow.function(args)
Greasemonkey.
Вот сценарий Greasemonkey, который я написал до сих пор:
function removeAllProperties() {
var xpath = "//A[@title='foobarbaz']";
var actionNodes = document.evaluate(
xpath,
document,
null,
XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
null
);
var total = actionNodes.snapshotLength;
for (var i=0; i < total; i++) {
var candidate = actionNodes.snapshotItem(i);
//alert(candidate.nodeName);
if (candidate.nodeName === "A") {
var onclick_value = candidate.getAttribute('onclick');
var needle = /javascript:foo\((.*)\);return false\;/;
onclick_value.match(needle);
//alert(onclick_value);
//alert(RegExp.$1);
var script_args = RegExp.$1;
if (confirm(script_args)) {
unsafeWindow.foo(script_args);
}
}
}
}
removeAllProperties();
Когда я устанавливаю этотсценарий и запустить его, я получаю предупреждение с аргументами arg1,...,arg5
.Если я нажимаю ОК, я получаю следующую ошибку в Google Chrome 5.0.375.125 для OS X:
Uncaught TypeError: Object [object DOMWindow] has no method 'foo'
На указанной веб-странице определенно есть foo()
- если я нажму blah
, тогда onclick
событие запускает foo()
.Я просто не могу заставить его работать через этот скрипт Greasemonkey.
Я неправильно использую unsafeWindow.function(args)
или Google Chrome не поддерживает этот метод запуска удаленных функций JavaScript?
Есть лииначе я должен использовать эту функцию, или я должен использовать другой метод полностью?
Спасибо за ваш совет.