Как нажать кнопку в открывшемся окне - PullRequest
0 голосов
/ 10 марта 2012

Я пытаюсь создать какой-то рабочий процесс в GreaseMonkey.Я начинаю с того, что GreaseMonkey определяет jQuery, если он еще не определен:

/*! jQuery v1.7.1 jquery.com | jquery.org/license */
if (typeof jQuery == 'undefined')
(function(a,b).......function(){return f})})(window); // packed version
jQuery.noConflict();
/*! end of jQuery */

Затем периодически проверяет веб-страницу (jQuery.ajax / type = get / url: window.location.href).Когда выполняется какое-то условие, окно создается с помощью

var url = <some page on the same domain>
var opened = window.open(url, "XYZ");

Вопрос в том, как заставить кнопку в открывшемся окне щелкнуть.Допустим, на странице есть кнопка

<input type="button" id="clickme"

Я пробовал очевидное, например

opened.document.getElementById('clickme').click()
jQuery(opened.document).find('#clickme').click()

Но ни одна из них не работает.Вероятно, это проблема GreaseMonkey, поэтому хотелось бы посмотреть, есть ли у кого-нибудь что-нибудь подобное.Мой текущий обходной путь - настроить другой скрипт GreaseMonkey для открытого URL, который нажимает кнопку, если window.name = 'XYZ'.

1 Ответ

1 голос
/ 10 марта 2012

Вопрос довольно расплывчатый;Я предполагаю, что вы создаете окно, используя window.open или что-то в этом роде, и хотите взаимодействовать с DOM внутри.

Вы должны иметь возможность использовать ссылку на недавно открытое окно каквы бы использовали переменную window в обычном JavaScript:

window.document.getElementById(...).doStuff(...)

становится

var thatWindowReference = window.open(...);
...
thatWindowReference.document.getElementById(...).doStuff(...)

Если в окне загружен jQuery, то вы можете сделать

thatWindowReference.$('selector').doStuff(...)

Что касается того, как имитировать нажатие на кнопку внутри этого окна:

thatWindowReference.document.getElementById('thatButton').click();

или использование jQuery:

thatWindowReference.$('#thatButton').click();

Редактировать : безиспользуя jQuery из нового окна ( протестируйте его на jsFiddle ):

var w = window.open('about:blank');
w.document.write('<button id="test" onclick="alert(\'I was clicked\');">Hello</button>');
$(w.document.body).find('#test').click();
...