DOMNodeInserted ciclo de eventos
-
12-12-2019 - |
Pergunta
Estou desenvolvendo uma extensão do google chrome (o meu quarto questão ou assim...) para o facebook, que adiciona um botão personalizado ao lado do botão "like".Desde posts são adicionados automaticamente para o feed de notícias sem uma atualização de página, eu tenho que adicionar o script toda vez que são adicionados novos lugares.
E eu uso DOMNodeInserted
do evento.
O problema é que, quando o evento é chamado de inserir um novo elemento (o botão) para a página, e faz um loop!
Meu script:
$(document).bind('DOMNodeInserted', function(event) {
$(".like_link").after('<span class="dot"> · </span><button class="taheles_link stat_elem as_link" title="תגיד תכל´ס" type="submit" name="taheles" onclick="apply_taheles()" data-ft="{"tn":">","type":22}"><span class="taheles_default_message">תכל´ס</span><span class="taheles_saving_message">לא תכלס</span></button>');
$(".taheles_saving_message").hide();
});
Você pode ver a minha pergunta anterior aqui
Eu estou cansado de fazer perguntas, então eu vou realmente aprecio qualquer resposta/comentário!
Solução
Isso funciona?Desde que você não insira nenhum mais .like_link
elementos, este deve ser um não-op quando o elemento de inserção acontece, uma vez que ele só olha para o nó inserções que contêm um .like_link
.
$(document).bind('DOMNodeInserted', function(event) {
$(event.target).find(".like_link").after(
'<span class="dot"> · </span>' +
'<button class="taheles_link stat_elem as_link" title="תגיד תכל´ס" type="submit" name="taheles" onclick="apply_taheles()" data-ft="{"tn":">","type":22}">' +
'<span class="taheles_default_message">תכל´ס</span><span class="taheles_saving_message">לא תכלס</span>' +
'</button>'
);
$(event.target).find(".taheles_saving_message").hide();
});