-2

我正在使用鼠标悬停功能向 Facebook 群组添加额外内容。我测试了 DIV 类,看看我是否已经添加了内容。

它适用于前 10 个左右带有 storyInnerWrapper 类的 DIV,但随后停止添加文本。我认为这是因为内容是动态的,就像下面的 Arun P Johny 所说的那样。

这是一个 JSfiddle 工作示例;
http://jsfiddle.net/hellonearthis/WHb2P/带有修复程序,它适用于示例。

下面是完整的油脂猴子脚本。

// ==UserScript==
// @name       FaceBook
// @version    0.1
// @description  Adds link 
// @match      https://www.facebook.com/*
// @match      https://www.facebook.com/
// @require    http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js
// ==/UserScript==

$( "div.storyInnerWrapper" ).mouseover(function() {
  var $this = $(this);
    if (!$this.data('extra')) { 
        $this.data('extra', true);
        $this.append('<div>Added a div</div>');
    }
});
4

3 回答 3

2

你不应该使用“id”属性来“标记”一个元素。“id”值必须是唯一的。相反,您可以使用.data()标记元素,如下所示:

$('div.storyInnerWrapper').mouseover(function() {
    var $this = $(this);
    if (!$this.data('extra')) { 
        $this.data('extra', true);
        $this.append('<div>Added a div</div>');
    }
});
于 2013-11-12T04:55:04.850 回答
1

为了解决我遇到的动态内容问题,我使用了Brock Adams 无数次提到的waitForKeyElements 也非常感谢Arun P Johny为我指明了正确的方向,感谢John S帮助我改进了基本代码。

最终的 Greasemonkey 脚本如下所示:

// ==UserScript==
// @name       FaceBook_add_stuff
// @description  Adds a div to wall posts when mouse is over them.
// @match      https://www.facebook.com/*
// @match      https://www.facebook.com/
// @require  http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
/*- The @grant directive is needed to work around a design change
    introduced in GM 1.0.   It restores the sandbox.
*/

function addExtraSeedLinks (jNode) {
    $( "div.storyInnerWrapper" ).mouseover(function() {
        var $this = $(this);
        if (!$this.data('extra')) { 
            $this.data('extra', true);
            $this.append('<div>Added a div</div>');
        }
    });
}

waitForKeyElements (".storyInnerWrapper", addExtraSeedLinks);
于 2013-11-13T01:46:00.487 回答
0

你应该这样做:

$( "div.storyInnerWrapper" ).mouseover(function() {
    //var index = $( "div.storyInnerWrapper" ).index();

    if ($("div.extra.storyInnerWrapper").index()== 0){  // if no tag

        $("div.storyInnerWrapper" ).append( "<div class='extra'>Added a div</div>" );
  }
});

请注意,我已将 #extra 替换为 .extra,因为 id 应该是唯一的。

于 2013-11-12T04:55:22.080 回答