Wiem o document.form.button.click()
metodzie. Chciałbym jednak wiedzieć, jak zasymulować to onclick
wydarzenie.
Znalazłem ten kod gdzieś tutaj w Stack Overflow, ale nie wiem, jak go użyć :(
function contextMenuClick()
{
var element= 'button'
var evt = element.ownerDocument.createEvent('MouseEvents');
evt.initMouseEvent('contextmenu', true, true,
element.ownerDocument.defaultView, 1, 0, 0, 0, 0, false,
false, false, false, 1, null);
element.dispatchEvent(evt);
}
Jak uruchomić zdarzenie kliknięcia myszą za pomocą JavaScript?
javascript
dom-events
mouseclick-event
Nok Imchen
źródło
źródło
Odpowiedzi:
(Zmodyfikowana wersja, aby działała bez prototype.js)
Możesz go używać w ten sposób:
Zauważ, że jako trzeci parametr możesz podać „opcje”. Opcje, których nie określisz, są pobierane z defaultOptions (patrz dolna część skryptu). Więc jeśli na przykład chcesz określić współrzędne myszy, możesz zrobić coś takiego:
Możesz użyć podobnego podejścia, aby zastąpić inne opcje domyślne.
Kredyty powinny trafić do kangaxa . Oto oryginalne źródło (specyficzne dla prototype.js).
źródło
Oto czysta funkcja JavaScript, która symuluje kliknięcie (lub dowolne zdarzenie myszy) na elemencie docelowym:
Oto działający przykład: http://www.spookandpuff.com/examples/clickSimulation.html
Możesz zasymulować kliknięcie dowolnego elementu w DOM . Coś takiego
simulatedClick(document.getElementById('yourButtonId'))
mogłoby zadziałać.Możesz przekazać obiekt do,
options
aby nadpisać ustawienia domyślne (aby zasymulować wybrany przycisk myszy, czy Shift/ Alt/ Ctrlsą przytrzymane itp. Opcje, które akceptuje, są oparte na API MouseEvents .Testowałem w Firefoksie, Safari i Chrome. Internet Explorer może wymagać specjalnego traktowania, nie jestem pewien.
źródło
type: options.click || 'click'
powinno byćtype: options.type || 'click'
.<div id = "outer"><div id = "inner"></div></div> simulatedClick(document.getElementById('outer'));
nie kliknie elementu wewnętrznego.div
zawiera przycisk lub łącze - nie chciałbyś, aby kliknięcie zewnętrznej strony powodowało kliknięcie wewnętrznego elementu.||
operatora w takich przypadkach, ponieważ ups, terazcanBubble:options.canBubble || true,
zawsze zwraca wartość true i najwyraźniej nikt tego nie zauważy przez 5 lat.Łatwiejszym i bardziej standardowym sposobem symulacji kliknięcia myszą byłoby bezpośrednie użycie konstruktora zdarzeń do utworzenia zdarzenia i wysłania go.
Próbny: http://jsfiddle.net/DerekL/932wyok6/
Działa to we wszystkich nowoczesnych przeglądarkach. W przypadku starszych przeglądarek, w tym IE,
MouseEvent.initMouseEvent
będzie musiał być niestety używany, chociaż jest przestarzały.źródło
Z dokumentacji Mozilla Developer Network (MDN), HTMLElement.click () jest tym, czego szukasz. Więcej informacji o wydarzeniach znajdziesz tutaj .
źródło
W oparciu o odpowiedź Dereka, zweryfikowałem to
działa zgodnie z oczekiwaniami, nawet z kluczowymi modyfikatorami. O ile wiem, nie jest to przestarzały interfejs API. Możesz również zweryfikować na tej stronie .
źródło
Możesz użyć elementuFromPoint :
obsługiwane we wszystkich przeglądarkach: https://caniuse.com/#feat=element-from-point
źródło
Kod JavaScript
Kod HTML
źródło