Как добавить onload
событие в элемент?
Могу ли я использовать:
<div onload="oQuickReply.swap();" ></div>
для этого?
javascript
html
monkey_boys
источник
источник
body
лучшеdiv
div
элементы не "загружаются".Ответы:
Нет, ты не можешь. Самый простой способ заставить это работать - поместить вызов функции непосредственно после элемента.
Пример:
или - еще лучше - прямо перед
</body>
:... чтобы не блокировать загрузку следующего контента.
источник
</body>
. Например, если вы хотите скрыть<div>
только если JavaScript включен, но избегайте «перепрошивки». Время видимости зависит от того, как долго браузер должен загружать / анализировать все встроенные / внешние скрипты.onload
onload
Событие может быть использовано только наdocument(body)
сам, рамки, изображения и скрипты. Другими словами, он может быть привязан только к телу и / или к каждому внешнему ресурсу . DIV не является внешним ресурсом и загружается как часть тела, поэтомуonload
событие там не применяется.источник
onload
не работают ни с одним<script>
безsrc
атрибута HTML (я пытался использовать этот совет во встроенном сценарии, и обнаружил, что он не работает)Вы можете автоматически запускать некоторые js для элемента IMG, используя onerror, но без src.
источник
Событие onload поддерживается только с несколькими тегами, как указано ниже.
Здесь ссылка на событие загрузки
источник
Попробуй это! И никогда не используйте триггер дважды на div!
Вы можете определить функцию для вызова перед тегом div.
ДЕМО: jsfiddle
источник
onload
), а затем вызывает эти функции. Сценарий работает, даже если вы измените атрибут на что-то отличное от,onload
например, jsfiddle.net/mrszgbxhЯ просто хочу добавить, что если кто-то хочет вызвать функцию при загрузке события div и вы не хотите использовать jQuery (из-за конфликта, как в моем случае), то просто вызовите функцию после всего HTML-кода или любого другого другой код, который вы написали, включая код функции, и просто вызовите функцию.
ИЛИ
источник
мы можем использовать MutationObserver для эффективного решения проблемы, добавив пример кода ниже
источник
В ноябре 2019 года я ищу способ создать (гипотетический)
onparse
EventListener
для<elements>
которых не берутonload
.(Гипотетический)
onparse
EventListener
должен быть в состоянии слушать, когда элемент анализируется .Третья попытка (и окончательное решение)
Я был очень доволен второй попыткой ниже, но меня просто поразило, что я могу сделать код короче и проще, создав специальное событие:
Это лучшее решение пока.
Пример ниже:
parse
Event
window.onload
любое время), которая:data-onparse
parse
EventListener
к каждому из этих элементовparse
Event
каждый из этих элементов для выполненияCallback
Рабочий пример:
Вторая попытка
Первая попытка ниже ( на основе
@JohnWilliams
"Блестящий Empty Image Hack ) используется зашиты<img />
и работал.Я подумал, что должна быть возможность
<img />
полностью удалить жестко закодированный и только динамически вставить его после обнаружения в элементе, который должен вызыватьonparse
событие, атрибута вроде:Оказывается, это действительно работает очень хорошо.
Пример ниже:
data-onparse
<img src />
и добавляет его в документ сразу после каждого из этих элементов.onerror
EventListener
когда механизм рендеринга анализирует каждый<img src />
Callback
и удаляет то, что динамически генерируется<img src />
из документаРабочий пример:
Первая попытка
Я могу построить на
@JohnWilliams
'<img src>
хака (на этой странице, с 2017 года) - что, до сих пор, лучший подход , который я наткнулся.Пример ниже:
onerror
EventListener
когда анализирует движок рендеринга<img src />
Callback
и удаляет<img src />
из документаРабочий пример:
источник
используйте iframe и скрывайте его, если iframe работает как тег body
источник
Мне нужно было запустить некоторый код инициализации после вставки фрагмента html (экземпляра шаблона), и, конечно, у меня не было доступа к коду, который манипулирует шаблоном и модифицирует DOM. Та же идея имеет место для любой частичной модификации DOM путем вставки html-элемента, обычно
<div>
.Некоторое время назад я взломал событие onload почти невидимого,
<img>
содержащегося в a<div>
, но обнаружил, что пустой стиль с областью видимости также подойдет:Обновление (15 июля 2017 г.) -
<style>
загрузка не поддерживается в последней версии IE. Edge поддерживает это, но некоторые пользователи видят в этом другой браузер и придерживаются IE.<img>
Элемент , кажется, лучше работать во всех браузерах.Чтобы минимизировать визуальное воздействие и использование ресурсов изображения, используйте встроенный src, который делает его маленьким и прозрачным.
Один комментарий, который я считаю нужным сделать с использованием a,
<script>
состоит в том, насколько сложнее определить, какой<div>
сценарий находится рядом, особенно в шаблонах, где вы не можете иметь идентичный идентификатор в каждом экземпляре, который генерирует шаблон. Я думал, что ответ может быть document.currentScript, но это не всегда поддерживается.<script>
Элемент не может определить свое собственное местоположение DOM надежно; ссылка на «это» указывает на главное окно и не помогает.Я считаю, что необходимо согласиться на использование
<img>
элемента, несмотря на то, что глупо. Это может быть дыра в платформе DOM / javascript, в которой можно использовать подключение.источник
Поскольку
onload
событие поддерживается только для нескольких элементов, вы должны использовать альтернативный метод.Вы можете использовать MutationObserver для этого:
источник
Мне действительно нравится библиотека YUI3 для такого рода вещей.
Смотрите: http://developer.yahoo.com/yui/3/event/#onavailable
источник
onload
.Я изучаю javascript и jquery и прохожу все ответы, я столкнулся с той же проблемой при вызове функции javascript для загрузки элемента div. Я пытался,
$('<divid>').ready(function(){alert('test'})
и это сработало для меня. Я хочу знать, это хороший способ выполнить вызов onload элемента div так же, как я использовал селектор jquery.Спасибо
источник
Как уже говорилось, вы не можете использовать событие onLoad вместо DIV, но перед тегом body.
но в случае, если у вас есть один файл нижнего колонтитула и включить его на многих страницах. лучше сначала проверить, отображается ли нужный div на этой странице, чтобы код не выполнялся на страницах, не содержащих этот DIV, чтобы он загружался быстрее и экономил время для вашего приложения.
так что вам нужно будет дать этому DIV ID и сделать:
источник
У меня был тот же вопрос, и я пытался заставить Div загрузить скрипт прокрутки, используя onload или load. Проблема, которую я обнаружил, состояла в том, что она всегда будет работать до того, как Div сможет открыться, а не во время или после нее, поэтому она не будет работать.
Тогда я придумал это как обходной путь.
Я поместил Div внутри Span и дал Span два события: наведение мыши и мышью. Затем под этим Div я разместил ссылку, чтобы открыть Div, и дал этой ссылке событие для onclick. Все события одинаковы, чтобы страница прокручивалась вниз до конца страницы. Теперь, когда нажата кнопка, чтобы открыть Div, страница частично опустится вниз, и Div откроется над кнопкой, вызывая события mouseover и mouseout, помогающие протолкнуть скрипт прокрутки вниз. Тогда любое движение мыши в этой точке будет толкать скрипт в последний раз.
источник
Вы можете использовать интервал, чтобы проверить его, пока он не загрузится так: https://codepen.io/pager/pen/MBgGGM
источник
Сначала ответьте на ваш вопрос: нет, вы не можете, не так, как вы хотели. Может быть, немного поздно, чтобы ответить, но это мое решение, без jQuery, чистый javascript. Первоначально он был написан для применения функции изменения размера к textareas после загрузки DOM и при включении.
Таким же образом вы можете использовать его для выполнения чего-либо с (всеми) элементами div или только с одним, если указано, например:
Если вам действительно нужно что-то сделать с div, загруженным после загрузки DOM, например, после вызова ajax, вы можете использовать очень полезный хак, который легко понять, и вы найдете его ... работая с элементы перед домом готов . Он говорит «до того, как DOM будет готов», но работает блестяще, точно так же, после вставки ajax или js-appendChild - независимо от div. Вот код, с небольшими изменениями в моих потребностях.
CSS
Javascript
источник
Когда вы загружаете html с сервера и вставляете его в дерево DOM, вы можете использовать
DOMSubtreeModified
его, однако он устарел - так что вы можете использоватьMutationObserver
или просто обнаруживать новый контент непосредственно внутри функции loadElement, чтобы вам не пришлось ждать событий DOMПоказать фрагмент кода
источник
Вы можете прикрепить прослушиватель событий, как показано ниже. Он сработает всякий раз, когда div с селектором
#my-id
полностью загружается в DOM.В этом случае EventName может быть «загрузить» или «щелкнуть»
https://api.jquery.com/on/#on-events-selector-data-handler
источник
Вместо этого используйте событие body.onload либо через attribute (
<body onload="myFn()"> ...
) , либо связав событие в Javascript. Это очень часто встречается в jQuery :источник
Попробуй это.
Попробуйте это тоже. Вы должны удалить
.
из,oQuickReply.swap()
чтобы функция работала.источник
alert("This is a div.");
вызывается, когда эта строка выполняется и результат (которыйundefined
) назначаетсяdiv.onload
. Что совершенно бессмысленно.источник