Mam problem z fałszowaniem kliknięcia kotwicy przez jQuery: Dlaczego mój gruby boks pojawia się po pierwszym kliknięciu przycisku wejściowego, a nie za drugim lub trzecim?
Oto mój kod:
<input onclick="$('#thickboxId').click();" type="button" value="Click me" />
<a id="thickboxId" href="myScript.php" class="thickbox" title="">Link</a>
Działa zawsze, gdy klikam bezpośrednio w link, ale nie, jeśli próbuję aktywować grube okno za pomocą przycisku wprowadzania. To jest w FF. W przypadku Chrome wydaje się, że działa za każdym razem. Jakieś wskazówki?
Odpowiedzi:
Staraj się unikać wstawiania wywołań jQuery w ten sposób. Umieść tag skryptu u góry strony, aby powiązać ze
click
zdarzeniem:Edytować:
Jeśli próbujesz zasymulować użytkownika fizycznego klikającego łącze, to nie sądzę, aby było to możliwe. Rozwiązaniem byłoby zaktualizowanie
click
zdarzenia przycisku, aby zmienićwindow.location
kod JavaScript:Edycja 2:
Teraz, gdy zdałem sobie sprawę, że Thickbox to niestandardowy widżet interfejsu użytkownika jQuery, instrukcje znalazłem tutaj :
Instrukcje:
Utwórz element odsyłacza (
<a href>
)Nadaj linkowi atrybut klasy o wartości Thickbox (
class="thickbox"
)W
href
atrybucie linku dodaj następującą kotwicę:#TB_inline
W
href
atrybucie po#TB_inline
dodaniu następującego ciągu zapytania do kotwicy:? height = 300 & width = 300 & inlineId = myOnPageContent
Zmień odpowiednio wartości height, width i inlineId w zapytaniu (inlineID to wartość identyfikatora elementu zawierającego treść, którą chcesz wyświetlić w ThickBox.
Opcjonalnie możesz dodać modal = true do ciągu zapytania (np.
#TB_inline?height=155&width=300&inlineId=hiddenModalContent&modal=true
), Aby zamknięcie ThickBox wymagało wywołaniatb_remove()
funkcji z poziomu ThickBox. Zobacz przykład ukrytej zawartości modalnej, w którym należy kliknąć tak lub nie, aby zamknąć ThickBox.źródło
.prop()
zamiastattr()
uzyskania rozstrzygniętego adresu URL.U mnie zadziałało:
źródło
focus
zamiastclick
:)[0]
wskazuje pierwszy element tablicy - selektor zwraca 0 lub więcej elementów po wykonaniu. To niefortunne, że.click()
nie wydaje się działać bezpośrednio w tym miejscu, ponieważ pozornie inne wywołania są stosowane do kolekcji elementów z selektorów konsekwentnie w całej strukturze.[0]
lub.get(0)
są takie same. Używają one wersji DOM elementu zamiast wersji jQuery..click()
Funkcja w tym przypadku nie jest zdarzenie click jQuery, ale rodzimy jeden.Niedawno odkryłem, jak wyzwalać zdarzenie kliknięcia myszą za pośrednictwem jQuery.
źródło
to podejście działa w przeglądarkach Firefox, Chrome i IE. mam nadzieję, że to komuś pomoże:
źródło
Chociaż jest to bardzo stare pytanie, znalazłem coś łatwiejszego do wykonania tego zadania. Jest to wtyczka jquery stworzona przez zespół jquery UI o nazwie simulate. możesz dołączyć go po jquery, a następnie możesz zrobić coś takiego
działa dobrze w chrome, firefox, opera i IE10. możesz go pobrać z https://github.com/eduardolundgren/jquery-simulate/blob/master/jquery.simulate.js
źródło
simulate()
jest to, że wysyła zdarzenia jQuery, a także wyzwala natywną akcję przeglądarki. To jest teraz poprawna odpowiedź +1Tytuł pytania brzmi „Jak zasymulować kliknięcie kotwicy w jQuery?”. Możesz użyć metod „trigger” lub „triggerHandler”, na przykład:
Nie testowane, to rzeczywisty skrypt, ale użyłem
trigger
i wsp. Wcześniej i działały dobrze.UPDATE w
triggerHandler
rzeczywistości nie robi tego, czego chce OP. Myślę, że 1421968 dostarcza najlepszej odpowiedzi na to pytanie.źródło
Proponuję przyjrzeć się API Selenium, aby zobaczyć, jak wywołują kliknięcie elementu w sposób zgodny z przeglądarką:
Poszukaj
BrowserBot.prototype.triggerMouseEvent
funkcji.źródło
Uważam, że możesz użyć:
Spowoduje to łatwe uruchomienie funkcji klikania, bez faktycznego klikania go.
źródło
Czy musisz sfałszować kliknięcie kotwicy? Z witryny Thickbox:
Jeśli to jest do zaakceptowania, powinno być tak proste, jak umieszczenie klasy grubego pudełka na samym wejściu:
Jeśli nie, polecam użycie Firebuga i umieszczenie punktu przerwania w metodzie onclick elementu kotwicy, aby sprawdzić, czy jest uruchamiany tylko przy pierwszym kliknięciu.
Edytować:
Okay, musiałem to wypróbować i dla mnie prawie dokładnie twój kod działał zarówno w Chrome, jak i Firefox:
Okno wyskakuje bez względu na to, czy kliknę element wejściowy, czy zakotwiczony. Jeśli powyższy kod działa dla Ciebie, sugeruję, że błąd leży gdzie indziej i spróbuj wyizolować problem.
Inną możliwością jest to, że używamy różnych wersji jquery / thickbox. Używam tego, co dostałem ze strony Thickbox - jQuery 1.3.2 i thickbox 3.1.
źródło
Możesz utworzyć formularz za pomocą jQuery lub w kodzie strony HTML z akcją, która naśladuje twój odnośnik href:
<a id="anchor_link" href="somepath.php">click here</a>.
źródło
Aby zasymulować kliknięcie kotwicy podczas lądowania na stronie, po prostu użyłem jQuery do animacji właściwości scrollTop w
$(document).ready.
Nie ma potrzeby stosowania złożonego wyzwalacza i działa to w IE 6 i każdej innej przeglądarce.źródło
Jeśli nie musisz używać JQuery, tak jak ja nie. Miałem problemy z działaniem w różnych przeglądarkach
.click()
. Więc używam:źródło
W Javascript możesz to zrobić
i możesz go używać jak
źródło
Używając skryptu Jure'a, zrobiłem to, aby łatwo „klikać” tyle elementów, ile chcesz.
Właśnie użyłem go Czytnik Google na ponad 1600 pozycjach i działał idealnie (w przeglądarce Firefox)!
źródło
createEventObject
w IE jest bardziej tworzenie obiektu zdarzenia do przekazania do modułów obsługi, niż wywoływanie zdarzenia syntetycznego. IEfireEvent
może być bliżejdispatchEvent
, ale będzie wyzwalać tylko słuchacze - nie domyślne działania przeglądarki. Jednak w IE możesz po prostu wywołaćclick
metodę.JQuery('#left').triggerHandler('click');
działa dobrze w Firefoksie i IE7. Nie testowałem tego na innych przeglądarkach.Jeśli chcesz uruchamiać automatyczne kliknięcia użytkowników, wykonaj następujące czynności:
źródło
To nie działa w natywnej przeglądarce Androida, aby kliknąć „ukryty element wejściowy (plik)”:
Ale to działa:
źródło
Próbując zasymulować „kliknięcie” w testach jednostkowych za pomocą pokrętła jQuery UI, nie udało mi się uzyskać żadnej z poprzednich odpowiedzi. W szczególności próbowałem zasymulować „obrót” po wybraniu strzałki w dół. Spojrzałem na testy jednostkowe jQuery UI spinner i używają następującej metody, która zadziałała dla mnie:
źródło