原始PHP代码:
var button='';
button+='<table border="0"id="table1"cellspacing="0"cellpadding="2"><tr><td>';
button+='<button type="submit" name="B5"style="height: 20; background-color: #0000FF; width:20" onclick="submitform(2);"></button></td>';
button+='<td>';button+='<button type="submit" name="B5"style="height: 20; background-color: #FFFF00; width:20" onclick="wrong();"></button></td>';
button+='</tr><tr><td>';button+='<button type="submit" name="B5"style="height: 20; background-color: #008000; width:20" onclick="wrong();"></button></td>';
button+='<td>';button+='<button type="submit" name="B5"style="height: 20; background-color: #FFFFFF; width:20" onclick="wrong();"></button></td>';
var button2='<button type="submit" name="B6" style="height: 20; background-color: #0000FF; width:20" disabled></button>';
在这种情况下,我想点击onclick
值为submitform(2);
但没有值或ID且名称相同的按钮。
我迷路了,这就是我尝试过的......
function clickb5 (jNode) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
//-- Value match is case-sensitive
waitForKeyElements (
//"#btn_submit input[type='submit'][onclick*=submitform(1);]",
"input[type='submit'][onclick*=submitform(1);]",
clickb5
);
onclick*=submitform(1);
也带有()值0,1,2,3,具体取决于页面。
但有一件事......
有人可以帮忙吗?谢谢!
解决方案有效但不是最佳 - 有助于获取随机时间吗?
setTimeout(Greasemonkey_main, 10000);
function Greasemonkey_main () {
unsafeWindow.submitform(0);
unsafeWindow.submitform(1);
unsafeWindow.submitform(2);
unsafeWindow.submitform(3);
}
全部谢谢!
答案 0 :(得分:1)
该选择器存在一些问题:
input[type='submit'][onclick*=submitform(1);]
搜索<input>
,但您想要的控件是<button>
。
[onclick*=submitform(1);]
是jQuery中的语法错误。始终将这些值放在引号中。在这种情况下,它将是:[onclick*='submitform(1)']
。
随着页面更改,尾随空格和分号趋于消失。因此,请从选择器中省略更耐用的代码。
您似乎试图点击的实际控件的HTML格式如下:
<button type="submit" onclick="submitform(1);" ...></button>
为此,您的代码应为:
waitForKeyElements (
"button[onclick*='submitform(1)']"",
clickb5
);
function clickb5 (jNode) {
var clickEvent = document.createEvent ('MouseEvents');
clickEvent.initEvent ('click', true, true);
jNode[0].dispatchEvent (clickEvent);
}
我不推荐它(它可能有时间问题并且它会不必要地使用unsafeWindow
),但为了完整性,可能可以用以下代码替换所有代码:< / p>
unsafeWindow.submitform(1);
同样,不建议这样做,如果网站是AJAX驱动的,它不是一个强大的解决方案。