2

Greasemonkey/Tampermonkeyを介してjQueryクリックをトリガーする際に問題が発生します...

jQuery('button').each(function() {
    jQuery(this).css('background', 'red');
    jQuery(this).click();
    location.assign("javascript:jQuery(this).click();void(0)");
}​

ご覧のとおり、 location.assignハックを試しましたが、何も機能せず、コンソールにもエラーはありません。

面白いことに、そうです、背景色が赤に変わるので.click()、他のjQueryメソッドとは動作が異なるものだと思います。

4

1 に答える 1

8

jQuery'sは、jQueryとDocs.click()の単なるショートカットです。.trigger()

対応するイベントが発生すると、.bind() またはそのショートカット メソッドの 1 つに関連付けられたイベント ハンドラーがトリガーされます。ただし、.trigger() メソッドを使用して手動で起動できます。

これは、jQuery によって設定されないイベント ハンドラーが.click()(または.trigger()) によって常にトリガーされるとは限らないことを意味します。

これを回避するには、実際のマウス イベントを送信します。

jQuery ('button').each ( function () {
    jQuery (this).css ('background', 'red');

    var clickEvent  = document.createEvent ('MouseEvents');
    clickEvent.initEvent ('click', true, true);
    this.dispatchEvent (clickEvent);
}




いくつかのまれなケースでは、ページは ではなくイベントの組み合わせで実際に機能することに注意してください。click理論的には、ページは人為的に生成されたイベントを区別することができます(私はまだ実際にそれを見たことはありません)。
その場合は、回避策を講じられるように、対象のページにリンクしてください。

于 2012-05-03T00:35:11.497 に答える