Jak dodać onload
zdarzenie do elementu?
Mogę uzyć:
<div onload="oQuickReply.swap();" ></div>
dla tego?
javascript
html
monkey_boys
źródło
źródło
body
lepiejdiv
div
elementy nie „ładują się”.Odpowiedzi:
Nie możesz. Najłatwiejszym sposobem, aby to zadziałało, byłoby umieszczenie wywołania funkcji bezpośrednio za elementem
Przykład:
lub - jeszcze lepiej - tuż przed
</body>
:... więc nie blokuje ładowania następującej treści.
źródło
</body>
. np. jeśli chcesz ukryć<div>
tylko jeśli JavaScript jest włączony, ale unikaj „flashowania”. Czas widoczności zależy od tego, jak długo przeglądarka musi załadować / parsować wszystkie wbudowane / zewnętrzne skrypty.onload
onload
Zdarzenie może być używany tylko nadocument(body)
sobie, ram, obrazów i skryptów. Innymi słowy, może być dołączony tylko do ciała i / lub każdego zewnętrznego zasobu . Div nie jest zasobem zewnętrznym i jest ładowany jako część ciała, więconload
zdarzenie nie ma tam zastosowania.źródło
onload
nie działają na żadnym<script>
bezsrc
atrybutu HTML (próbowałem skorzystać z tej porady w skrypcie wbudowanym i okazało się, że nie działa)Możesz uruchomić niektóre js automatycznie na elemencie IMG, używając onerror i bez src.
źródło
Zdarzenie onload obsługuje tylko kilka tagów, takich jak wymienione poniżej.
Tutaj odniesienie do zdarzenia onload
źródło
Spróbuj tego! I nigdy nie używaj spustu dwa razy na div!
Możesz zdefiniować funkcję do wywołania przed znacznikiem div.
DEMO: jsfiddle
źródło
onload
), a następnie wywołuje te funkcje. Skrypt działa, nawet jeśli zmienisz atrybut na coś innego niżonload
np. Jsfiddle.net/mrszgbxhChcę tylko dodać tutaj, że jeśli ktoś chce wywołać funkcję podczas zdarzenia div div i nie chcesz używać jQuery (z powodu konfliktu, jak w moim przypadku), po prostu wywołaj funkcję po całym kodzie HTML lub dowolnym inny kod, który napisałeś, w tym kod funkcji i po prostu wywołaj funkcję.
LUB
źródło
możemy użyć MutationObserver do skutecznego rozwiązania problemu, dodając poniższy przykładowy kod
źródło
W listopadzie 2019 r. Szukam sposobu na stworzenie (hipotetycznego),
onparse
EventListener
do<elements>
czego się nie zgadzamonload
.(Hipotetyczny)
onparse
EventListener
musi być w stanie nasłuchiwać podczas analizowania elementu .Trzecia próba (i ostateczne rozwiązanie)
Byłem bardzo zadowolony z drugiej próby poniżej, ale uderzyło mnie, że mogę skrócić i uprościć kod, tworząc wydarzenie dostosowane do potrzeb:
To najlepsze jak dotąd rozwiązanie.
Przykład poniżej:
parse
Event
window.onload
dowolnym momencie), która:data-onparse
parse
EventListener
do każdego z tych elementówparse
Event
do każdego z tych elementów, aby wykonaćCallback
Przykład roboczy:
Drugie podejście
Pierwsza próba poniżej (na podstawie
@JohnWilliams
"genialny Pusty Hack ) stosuje się sztywno<img />
i pracował.Pomyślałem, że powinno być możliwe
<img />
całkowite usunięcie zakodowanego na stałe i tylko dynamiczne wstawienie go po wykryciu w elemencie, który musiał uruchomićonparse
zdarzenie, atrybutu takiego jak:Okazuje się, że to naprawdę działa bardzo dobrze.
Przykład poniżej:
data-onparse
<img src />
i dołącza go do dokumentu, natychmiast po każdym z tych elementówonerror
EventListener
gdy silnik renderujący analizuje każdy<img src />
Callback
i usuwa dynamicznie generowane<img src />
z dokumentuPrzykład roboczy:
Pierwsze podejscie
Mogę bazować na
@JohnWilliams
„<img src>
hacku ” (na tej stronie od 2017 r.) - co do tej pory jest najlepszym podejściem, na jakie się natknąłem.Przykład poniżej:
onerror
EventListener
podczas analizy silnika renderowania<img src />
Callback
i usuwa<img src />
z dokumentuPrzykład roboczy:
źródło
użyj iframe i ukryj go iframe działa jak znacznik body
źródło
Musiałem uruchomić kod inicjujący po włożeniu fragmentu HTML (instancji szablonu) i oczywiście nie miałem dostępu do kodu, który manipuluje szablonem i modyfikuje DOM. Ten sam pomysł dotyczy każdej częściowej modyfikacji DOM poprzez wstawienie elementu HTML, zwykle a
<div>
.Jakiś czas temu zrobiłem włamanie ze zdarzeniem onload prawie niewidocznego
<img>
zawartego w<div>
, ale odkryłem, że styl o pustym zasięgu również:Aktualizacja (15 lipca 2017 r.) -
<style>
obciążenie nie jest obsługiwane w ostatniej wersji IE. Edge go obsługuje, ale niektórzy użytkownicy postrzegają to jako inną przeglądarkę i trzymają się IE.<img>
Elementem wydaje się lepiej działa we wszystkich przeglądarkach.Aby zminimalizować efekt wizualny i zużycie zasobów obrazu, użyj wbudowanego pliku src, który zachowa go mały i przezroczysty.
Jednym komentarzem, który powinienem zrobić na temat używania, jest
<script>
to, o ile trudniej jest ustalić, który<div>
skrypt jest blisko, szczególnie w szablonach, w których nie można mieć identycznego identyfikatora w każdej instancji generowanej przez szablon. Myślałem, że odpowiedzią może być document.currentScript, ale nie jest to powszechnie obsługiwane.<script>
Element nie może określić własne położenie DOM niezawodnie; odniesienie do „tego” wskazuje na główne okno i nie jest pomocne.Uważam, że konieczne jest zadowalanie się użyciem
<img>
elementu, mimo że jest głupkowaty. Może to być dziura w strukturze DOM / javascript, która mogłaby użyć wtyczki.źródło
Ponieważ
onload
zdarzenie jest obsługiwane tylko w kilku elementach, musisz użyć alternatywnej metody.Możesz do tego użyć MutationObserver :
źródło
Naprawdę podoba mi się biblioteka YUI3.
Zobacz: http://developer.yahoo.com/yui/3/event/#onavailable
źródło
onload
.Uczę się javascript i jquery i przechodziłem przez całą odpowiedź, napotkałem ten sam problem podczas wywoływania funkcji javascript do ładowania elementu div. Próbowałem
$('<divid>').ready(function(){alert('test'})
i to zadziałało dla mnie. Chcę wiedzieć, że jest to dobry sposób na wykonanie wywołania onload na elemencie div w taki sam sposób, jak przy użyciu selektora jquery.dzięki
źródło
Jak już powiedziano, nie można użyć zdarzenia onLoad na DIV, ale przed tagiem body.
ale jeśli masz jeden plik stopki i umieścisz go na wielu stronach. lepiej najpierw sprawdzić, czy żądany plik div znajduje się na tej stronie, aby kod nie był wykonywany na stronach, które nie zawierają tego DIV, aby przyspieszyć ładowanie i zaoszczędzić trochę czasu na aplikację.
więc musisz nadać temu DIV identyfikator i wykonać:
źródło
Miałem to samo pytanie i próbowałem uzyskać Div, aby załadował skrypt przewijania, używając onload lub load. Problem, który znalazłem, polegał na tym, że zawsze działało, zanim Div mógł się otworzyć, a nie w trakcie lub po nim, więc tak naprawdę nie działało.
Potem wymyśliłem to jako obejście.
Umieściłem Div wewnątrz Span i dałem Span dwa zdarzenia, najechanie myszką i mouseout. Następnie pod tym divem umieściłem link, aby otworzyć div, i dałem temu linkowi zdarzenie do kliknięcia. Wszystkie zdarzenia są dokładnie takie same, aby przewinąć stronę w dół na dole strony. Teraz, gdy kliknięty zostanie przycisk otwierający Div, strona częściowo przeskoczy w dół, a Div otworzy się nad przyciskiem, powodując, że zdarzenia najechania kursorem myszy i myszy zostaną przesunięte w dół. Wówczas każdy ruch myszy w tym punkcie popchnie skrypt po raz ostatni.
źródło
Możesz użyć interwału, aby to sprawdzić, dopóki się nie załaduje: https://codepen.io/pager/pen/MBgGGM
źródło
Najpierw odpowiedz na pytanie: Nie, nie możesz, nie wprost tak, jak chciałeś to zrobić. Może trochę spóźnić się na odpowiedź, ale to jest moje rozwiązanie, bez jQuery, czysty javascript. Pierwotnie został napisany, aby zastosować funkcję zmiany rozmiaru w obszarach tekstowych po załadowaniu DOM i włączeniu go.
W ten sam sposób możesz użyć go do zrobienia czegoś z (wszystkimi) divami lub tylko jednym, jeśli określono, tak:
Jeśli naprawdę musisz zrobić coś z divem, ładowanym po załadowaniu DOM, np. Po wywołaniu ajax, możesz użyć bardzo pomocnego hacka, który jest łatwy do zrozumienia, a znajdziesz go ... współpracuje z- elementy-przed-the-dom-jest gotowy ... . Mówi „zanim DOM jest gotowy”, ale działa genialnie w ten sam sposób, po wstawieniu ajax lub js-appendChild-cokolwiek z div. Oto kod z niewielkimi zmianami w moich potrzebach.
css
javascript
źródło
Po załadowaniu pliku HTML z serwera i wstawieniu go do drzewa DOM można go używać,
DOMSubtreeModified
jednak jest on przestarzały - można więc użyćMutationObserver
lub po prostu wykryć nową zawartość bezpośrednio w funkcji loadElement, aby nie trzeba było czekać na zdarzenia DOMPokaż fragment kodu
źródło
Możesz dołączyć detektor zdarzeń, jak poniżej. Uruchamia się, gdy div mający selektor
#my-id
ładuje się całkowicie do DOM.W takim przypadku nazwa zdarzenia może być „wczytaj” lub „kliknij”
https://api.jquery.com/on/#on-events-selector-data-handler
źródło
Zamiast tego użyj zdarzenia body.onload za pomocą atrybutu (
<body onload="myFn()"> ...
) lub poprzez powiązanie zdarzenia w JavaScript. Jest to niezwykle powszechne w przypadku jQuery :źródło
Spróbuj tego.
Spróbuj tego też. Musisz usunąć
.
z,oQuickReply.swap()
aby funkcja działała.źródło
alert("This is a div.");
wywoływany, gdy wiersz ten jest wykonywany, a wynik (który jestundefined
) jest przypisywanydiv.onload
. Co jest całkowicie bezcelowe.źródło