DOMNodeInserted事件循环

时间:2012-05-20 14:04:47

标签: javascript jquery dom google-chrome-extension mutation-events

我正在为facebook开发一个chrome扩展程序(我的第四个问题......),它在“喜欢”按钮旁边添加了一个自定义按钮。由于帖子会自动添加到新闻Feed而不刷新页面,因此每次添加新帖子时都必须添加脚本。

我使用DOMNodeInserted事件。

问题在于,当调用事件时,我向页面插入一个新元素(按钮),然后循环!

我的剧本:

$(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();
});

您可以看到我之前的问题here

我已经厌倦了提问,所以我真的很感激任何回答/评论!

1 个答案:

答案 0 :(得分:1)

这有用吗?假设您不再插入.like_link个元素,那么当您的元素插入发生时,这应该是无操作,因为它只查找包含.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();
});