我正在尝试在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',则单击该按钮。
答案 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();