it-swarm.com.de

Fake "click", um eine Onclick-Methode zu aktivieren

Ich habe ein Element mit einer onclick Methode.

Ich möchte diese Methode (oder: einen Klick auf dieses Element vortäuschen) in einer anderen Funktion aktivieren.

Ist das möglich?

46
yoavf

Wenn Sie JQuery verwenden, können Sie Folgendes tun:

$('#elementid').click();
60

Sobald Sie ein Element ausgewählt haben, können Sie click () aufrufen.

document.getElementById('link').click();

siehe: https://developer.mozilla.org/En/DOM/Element.click

Ich erinnere mich nicht, ob dies auf IE funktioniert, aber es sollte. Ich habe keine Windows-Maschine in der Nähe.

62
Ben

Ich könnte Ihre Frage falsch interpretieren, aber ja, das ist möglich. Die Art und Weise, wie ich es tun würde, ist folgende:

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
}

Wenn Sie jetzt auf dieses Element klicken, wird der Code in clickHandler ausgeführt. Auf ähnliche Weise können Sie denselben Code ausführen, indem Sie die Funktion im Kontext anderer Funktionen aufrufen (oder sogar clickHandler zuweisen, um Ereignisse zu behandeln, die von anderen Elementen ausgelöst werden)>

7
Tom
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 wird in allen gängigen Browsern unterstützt. Das obige Beispiel basiert auf einem Beispiel simulateClick() function on MDN .

4

Wenn Sie jQuery verwenden, müssen Sie das .trigger Funktion, also wäre es so etwas wie:

element.trigger('click');

http://api.jquery.com/trigger/

4

Dies ist ein perfektes Beispiel dafür, wo Sie eine Javascript-Bibliothek wie Prototype oder JQuery verwenden sollten, um die browserübergreifenden Unterschiede zu beseitigen.

3
RedFilter

ruf einfach "onclick" an!

hier ist ein Beispiel-HTML:

<div id="c" onclick="alert('hello')">Click me!</div>
<div onclick="document.getElementById('c').onclick()">Fake click the previous link!</div>
2
hasen

Für IE gibt es die fireEvent () -Methode. Weiß nicht, ob das für andere Browser funktioniert.

2
Vilx-

Mit javascript können Sie click() und focus() wie im folgenden Beispiel auslösen

document.addEventListener("click", function(e) {
  console.log("Clicked On : ",e.toElement);
},true);
document.addEventListener('focus',function(e){
  console.log("Focused On : ",e.srcElement);
},true);

document.querySelector("#button_1").click();
document.querySelector("#input_1").focus();
<input type="button" value="test-button" id="button_1">
<input type="text" value="value 1" id="input_1">
<input type="text" value="value 2" id="input_2">
2
Niklesh Raut

Ich habe jQuery nicht verwendet, aber IIRC, die erste erwähnte Methode, löst den onclick -Handler nicht aus.

Ich würde die zugehörige onclick -Methode direkt aufrufen, wenn Sie die Ereignisdetails nicht verwenden.

1
Can Berk Güder