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="תגיד תכל&acute;ס" type="submit" name="taheles" onclick="apply_taheles()" data-ft="{&quot;tn&quot;:&quot;&gt;&quot;,&quot;type&quot;:22}"><span class="taheles_default_message">תכל&acute;ס</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!

Foi útil?

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="תגיד תכל&acute;ס" type="submit" name="taheles" onclick="apply_taheles()" data-ft="{&quot;tn&quot;:&quot;&gt;&quot;,&quot;type&quot;:22}">' +
            '<span class="taheles_default_message">תכל&acute;ס</span><span class="taheles_saving_message">לא תכלס</span>' +
        '</button>'
    );
    $(event.target).find(".taheles_saving_message").hide();
});
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top