テスト中:`クリック()`クリックイベントハンドラ
var btn = document.querySelector('button')
btn.addEventListener('click', log)
function log(event) {
var p = document.createElement('p')
p.textContent = event.type
document.body.appendChild(p)
fire()
}
function fire() {
btn.click()
}
<button type="button">Click me</button>
私は、例外がスローされますと思います。 Clickイベントハンドラのclick()
はclickイベントを送出し、clickイベントハンドラはclick()
を再度呼び出し、clickイベントを再度送出します。しかし、結果は私が思ったのと同じではなく、2つの「クリック」(IE出力の「クリック」)を出力するだけです。
fire
関数を変更して、クリックイベントを作成して送出すると、結果は期待通りです。
var btn = document.querySelector('button')
btn.addEventListener('click', log)
function log(event) {
var p = document.createElement('p')
p.textContent = event.type
document.body.appendChild(p)
fire()
}
function fire() {
var event = new MouseEvent('click')
btn.dispatchEvent(event)
}
<button type="button">Click me</button>
click()
は異なった動作を、なぜ私の質問はありますか?
Notice:jQueryは使用されていません.jQueryメソッド.click()
とは関係ありません。
もう少し説明できますか?なぜログが再度呼び出されないのですか? – Rajesh
@Rajesh 'クリック'イベントは実行されません - 'log'関数は実行されません – Justinas
@Justinasなぜ' log'と 'fire'が2回呼び出されますか?あなたによると、 'log'は一度呼び出されたはずです。しかしconsole.logは2つの実行を示しています:https://jsfiddle.net/wostex/82d39L4n/1/ – wostex