Como você adiciona um onload
evento a um elemento?
Eu posso usar:
<div onload="oQuickReply.swap();" ></div>
por esta?
javascript
html
monkey_boys
fonte
fonte
body
melhordiv
div
elementos não "carregam".Respostas:
Não, você não pode. A maneira mais fácil de fazê-lo funcionar seria colocar a chamada de função diretamente após o elemento
Exemplo:
ou - melhor ainda - bem na frente de
</body>
:... para que não impeça o carregamento do seguinte conteúdo.
fonte
</body>
. fe se você quiser ocultar<div>
apenas se o javascript estiver ativado, mas evite "piscar". O tempo de visibilidade depende de quanto tempo o navegador precisa carregar / analisar todos os scripts embutidos / externos.onload
O
onload
evento pode ser usado apenas emdocument(body)
si mesmo, quadros, imagens e scripts. Em outras palavras, ele pode ser anexado apenas ao corpo e / ou a cada recurso externo . O div não é um recurso externo e é carregado como parte do corpo, portanto, oonload
evento não se aplica a ele.fonte
onload
, não funcionam<script>
sem nenhumsrc
atributo HTML (eu estava tentando usar este conselho em um script embutido e achei que não estava funcionando)Você pode acionar alguns js automaticamente em um elemento IMG usando onerror e nenhum src.
fonte
evento onload, ele suporta apenas algumas tags, como as listadas abaixo.
Aqui a referência para o evento onload
fonte
Tente isso! E nunca use trigger duas vezes em div!
Você pode definir a função a ser chamada antes da tag div.
DEMO: jsfiddle
fonte
onload
) e depois chama essas funções. O script funciona mesmo se você alterar o atributo para algo diferente deonload
eg jsfiddle.net/mrszgbxhEu só quero adicionar aqui que, se alguém quiser chamar uma função no evento load de div e você não quiser usar o jQuery (devido a conflitos como no meu caso), basta chamar uma função depois de todo o código html ou qualquer outro código que você escreveu, incluindo o código da função e simplesmente chame uma função.
OU
fonte
podemos usar o MutationObserver para resolver o problema de maneira eficiente, adicionando um código de exemplo abaixo
fonte
Em novembro de 2019, estou procurando uma maneira de criar um (hipotético)
onparse
EventListener
para o<elements>
qual não é precisoonload
.O (hipotético)
onparse
EventListener
deve poder ouvir quando um elemento é analisado .Terceira tentativa (e solução definitiva)
Fiquei muito feliz com a Segunda Tentativa abaixo, mas me ocorreu que eu posso tornar o código mais curto e mais simples, criando um evento personalizado:
Esta é a melhor solução ainda.
O exemplo abaixo:
parse
Event
window.onload
qualquer momento) que:data-onparse
parse
EventListener
cada um desses elementosparse
Event
para cada um desses elementos para executar oCallback
Exemplo de trabalho:
Segunda tentativa
o primeira tentativa abaixo (baseada no
@JohnWilliams
'brilhante corte de imagem vazia ) usou um código<img />
e funcionou.Eu pensei que deveria ser possível remover o código codificado
<img />
completamente e apenas inseri-lo dinamicamente depois de detectar, em um elemento que precisava disparar umonparse
evento, um atributo como:Acontece que isso funciona muito bem mesmo.
O exemplo abaixo:
data-onparse
<img src />
e o anexa ao documento, imediatamente após cada um desses elementosonerror
EventListener
quando o mecanismo de renderização analisa cada<img src />
Callback
e remove que gerado dinamicamente<img src />
do documentoExemplo de trabalho:
Primeira tentativa
Eu posso construir sobre
@JohnWilliams
'<img src>
hack (nesta página, a partir de 2017) - que é, até agora, a melhor abordagem que encontrei.O exemplo abaixo:
onerror
EventListener
quando o mecanismo de renderização analisa<img src />
Callback
e remove o<img src />
do documentoExemplo de trabalho:
fonte
use um iframe e oculte-o iframe funciona como uma etiqueta corporal
fonte
Eu precisava que algum código de inicialização fosse executado depois que um pedaço de html (instância do modelo) foi inserido e, é claro, não tive acesso ao código que manipula o modelo e modifica o DOM. A mesma idéia vale para qualquer modificação parcial do DOM pela inserção de um elemento html, geralmente um
<div>
.Há algum tempo, fiz um hack com o evento onload de um quase invisível
<img>
contido em um<div>
, mas descobri que um estilo vazio com escopo também fará:Atualização (15 de julho de 2017) - O
<style>
onload não é suportado na última versão do IE. O Edge é compatível, mas alguns usuários veem isso como um navegador diferente e seguem o IE. O<img>
elemento parece funcionar melhor em todos os navegadores.Para minimizar o impacto visual e o uso de recursos da imagem, use um src embutido que a mantenha pequena e transparente.
Um comentário que acho que preciso fazer sobre o uso de a
<script>
é o quão mais difícil é determinar qual<div>
script está próximo, especialmente em modelos em que você não pode ter um ID idêntico em cada instância que o modelo gera. Eu pensei que a resposta poderia ser document.currentScript, mas isso não é universalmente suportado. Um<script>
elemento não pode determinar sua própria localização DOM de maneira confiável; uma referência a 'this' aponta para a janela principal e não ajuda em nada.Eu acredito que é necessário se contentar em usar um
<img>
elemento, apesar de ser pateta. Isso pode ser um buraco na estrutura DOM / javascript que pode ser usada.fonte
Como o
onload
evento é suportado apenas em alguns elementos, é necessário usar um método alternativo.Você pode usar um MutationObserver para isso:
fonte
Eu realmente gosto da biblioteca YUI3 para esse tipo de coisa.
Veja: http://developer.yahoo.com/yui/3/event/#onavailable
fonte
onload
.Eu estou aprendendo javascript e jquery e estava passando por toda a resposta, enfrentei o mesmo problema ao chamar a função javascript para carregar o elemento div. eu tentei
$('<divid>').ready(function(){alert('test'})
e funcionou para mim. Eu quero saber se esta é uma boa maneira de executar a chamada onload no elemento div da maneira que fiz usando o seletor jquery.obrigado
fonte
Como foi dito, você não pode usar o evento onLoad em uma DIV, mas antes da tag body.
mas caso você tenha um arquivo de rodapé e o inclua em várias páginas. é melhor verificar primeiro se a div que você deseja está nessa página exibida, para que o código não seja executado nas páginas que não contêm esse DIV para agilizar o carregamento e economizar tempo para o seu aplicativo.
então, você precisará fornecer um ID a esse DIV e fazer:
fonte
Eu tinha a mesma pergunta e estava tentando obter um Div para carregar um script de rolagem, usando onload ou load. O problema que encontrei foi que sempre funcionava antes que o Div pudesse abrir, não durante ou depois, para que realmente não funcionasse.
Então eu vim com isso como uma solução alternativa.
Coloquei o Div dentro de um Span e dei ao Span dois eventos, um mouseover e um mouseout. Em seguida, abaixo desse Div, coloquei um link para abrir o Div e dei a esse link um evento para onclick. Todos os eventos são exatamente iguais, para fazer a página rolar para baixo até o final da página. Agora, quando você clica no botão para abrir o Div, a página salta para baixo parcialmente e o Div é aberto acima do botão, fazendo com que os eventos de mouseover e mouseout ajudem a empurrar o script de rolagem para baixo. Então, qualquer movimento do mouse nesse ponto empurrará o script uma última vez.
fonte
Você pode usar um intervalo para procurá-lo até que ele carregue assim: https://codepen.io/pager/pen/MBgGGM
fonte
Primeiro a responder sua pergunta: Não, você não pode, não diretamente como você queria. Pode ser um pouco tarde para responder, mas esta é a minha solução, sem jQuery, javascript puro. Ele foi originalmente escrito para aplicar uma função de redimensionamento às áreas de texto depois que o DOM é carregado e pressionado.
Da mesma forma que você pode usá-lo para fazer algo com (all) divs ou apenas um, se especificado, da seguinte forma:
Se você realmente precisa fazer algo com uma div, carregada após o DOM ser carregado, por exemplo, após uma chamada ajax, você pode usar um hack muito útil, fácil de entender e que você encontrará ... trabalhando com elementos-antes-do-dom-estar-pronto ... . Ele diz "antes que o DOM esteja pronto", mas funciona de maneira brilhante da mesma maneira, após uma inserção do ajax ou js-appendChild, qualquer que seja uma div. Aqui está o código, com algumas pequenas alterações nas minhas necessidades.
css
javascript
fonte
Quando você carrega algum html do servidor e o insere na árvore do DOM, pode usá-
DOMSubtreeModified
lo, mas está obsoleto - para que você possa usarMutationObserver
ou apenas detectar novo conteúdo diretamente na função loadElement, para não precisar esperar pelos eventos do DOMMostrar snippet de código
fonte
Você pode anexar um ouvinte de evento como abaixo. Ele será acionado sempre que o div com seletor for
#my-id
carregado completamente no DOM.Nesse caso, EventName pode ser 'load' ou 'click'
https://api.jquery.com/on/#on-events-selector-data-handler
fonte
Use o evento body.onload, por meio de attribute (
<body onload="myFn()"> ...
) ou vinculando um evento em Javascript. Isso é extremamente comum no jQuery :fonte
Tente isso.
Experimente este também. Você precisa remover
.
deoQuickReply.swap()
para que a função funcione.fonte
alert("This is a div.");
chamado quando essa linha é executada e o resultado (que éundefined
) atribuídodiv.onload
. O que é completamente inútil.fonte