如何在打开的窗口中单击按钮

时间:2012-03-10 03:38:52

标签: javascript jquery firefox greasemonkey

我正在尝试在GreaseMonkey中创建某种工作流程。 我从定义jQuery的GreaseMonkey开始,如果它尚未定义:

/*! 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问题,所以想看看是否有人有类似的工作。我目前的解决方法是针对打开的URL设置另一个GreaseMonkey脚本,如果window.name ='XYZ',则单击该按钮。

1 个答案:

答案 0 :(得分:1)

这个问题很模糊;我假设您正在使用window.open创建一个窗口,或者想要与内部的DOM进行交互。

您应该可以使用对新打开窗口的引用,就像在常规JavaScript中使用window变量一样:

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();

编辑:在新窗口(test it out on jsFiddle)内不使用jQuery:

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();