onclickメソッドを持つ要素があります。
別の関数内でそのメソッドをアクティブ化 (または、この要素のクリックを偽造) したいと思います。
これは可能ですか?
onclickメソッドを持つ要素があります。
別の関数内でそのメソッドをアクティブ化 (または、この要素のクリックを偽造) したいと思います。
これは可能ですか?
要素を選択したら、click() を呼び出すことができます
document.getElementById('link').click();
参照: https://developer.mozilla.org/En/DOM/Element.click
これが IE で動作するかどうかは覚えていませんが、動作するはずです。近くに Windows マシンがありません。
JQuery を使用している場合は、次のことができます。
$('#elementid').click();
私はあなたの質問を誤解している可能性がありますが、はい、これは可能です。私がそれを行う方法は次のとおりです。
var oElement = document.getElementById('elementId'); // get a reference to your element
oElement.onclick = clickHandler; // assign its click function a function reference
function clickHandler() {
// this function will be called whenever the element is clicked
// and can also be called from the context of other functions
}
これで、この要素がクリックされるたびに、コードclickHandler
が実行されます。同様に、他の関数のコンテキスト内から関数を呼び出すことで、同じコードを実行できます (またはclickHandler
、他の要素によってトリガーされたイベントを処理するために割り当てることもできます)>
jQuery を使用している場合は、関数を使用する必要があるため、次の.trigger
ようになります。
element.trigger('click');
var clickEvent = new MouseEvent('click', {
view: window,
bubbles: true,
cancelable: true
});
var element = document.getElementById('element-id');
var cancelled = !element.dispatchEvent(clickEvent);
if (cancelled) {
// A handler called preventDefault.
alert("cancelled");
} else {
// None of the handlers called preventDefault.
alert("not cancelled");
}
element.dispatchEvent
すべての主要なブラウザーでサポートされています。simulateClick()
上記の例は、 MDNのサンプル関数に基づいています。
これは、Prototype や JQuery などの JavaScript ライブラリを使用して、ブラウザー間の違いを抽象化する必要がある場所の完璧な例です。
「onclick」を呼び出すだけです!
html の例を次に示します。
<div id="c" onclick="alert('hello')">Click me!</div>
<div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div>
IE にはfireEvent()メソッドがあります。それが他のブラウザで機能するかどうかはわかりません。
私はjQueryを使用していませんが、IIRC、言及された最初のメソッドはonclick
ハンドラーをトリガーしません。
onclick
イベントの詳細を使用していない場合は、関連するメソッドを直接呼び出します。
要素の onclick 属性を取得してから eval に渡すこともできます。これは、評価に対する大きなタブーにもかかわらず機能するはずです。以下にサンプルを載せます
eval(document.getElementById('elementId').getAttribute('onclick'));