0

原始 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>';

在这种情况下,我想单击具有onclicksubmitform(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);
}

谢谢大家!

4

1 回答 1

1

该选择器存在一些问题:

  1. input[type='submit'][onclick*=submitform(1);]搜索 a <input>,但您想要的控件是 a <button>

  2. [onclick*=submitform(1);]是 jQuery 中的语法错误。始终将这些值放在引号中。在这种情况下,它将是:[onclick*='submitform(1)']

  3. 尾随空格和分号往往会随着页面更改而消失。所以省略选择器中的那些以获得更持久的代码。


您似乎试图单击的实际控件具有如下 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不必要地使用),但为了完整起见,您可能可以将所有代码替换为:

unsafeWindow.submitform(1);

同样,不建议这样做,如果站点是 AJAX 驱动的,这不是一个可靠的解决方案。

于 2013-04-28T18:52:32.520 回答