2

我目前正在为 Greasemonkey 编写这个脚本。此脚本的目标是从 MeetMe.com 网站的提要中删除特定用户的帖子。
我的代码是:

// ==UserScript==
// @name        PostBeGone
// @namespace   TestingNameSpace
// @include     http://www.meetme.com/apps/home
// @version     1
// ==/UserScript==
var posterId;
var blacklist = new Array();
var toDelete;
blacklist [0] = 45112400; //These are just random peoples' user Id's that I am
blacklist [1] = 9649820;  //using to test this script
blacklist [2] = 55907221;
blacklist [3] = 56788411;
window.onload = function checkAndRemove () {
    var children = document.getElementById('feedReloadArea').childnodes;
    alert(children); //alert says "undefined"
    i = 0;
    While (i < children.length) 
    {
        posterId = children[i].getAttribute('data-poster');
        toDelete = null;

        i2 = 0;
        while (i2 < blacklist.length)
        {
            if (posterId == blacklist[i2])
            {
                toDelete = children[i];
                break;
            }
            i2++;
        }
        if (toDelete != null)
        {
            toDelete.parentNode.removeChild(toDelete);
        }
        i++;
    }
}

使用具有多次执行的各种警报,我知道代码执行到我拥有的点alert(children),即返回undefined

在加入window.onload =我的脚本之前,在搜索谷歌和这个网站寻找答案时,我读了很多地方,问题可能是脚本可能在页面加载之前尝试执行,所以我添加了window.onload =. 但是,问题仍然存在,我找不到任何与我的问题相似的问题来理解它。

要查看元素的 html 代码,我一直在使用 Firefox 的“检查元素”功能。页面上可能有帮助的 html 代码片段是:

<div id="feedReloadArea" style="display: block;">  
     <div class="feedItemArea feedSpotlightHighlight" data-comment-maintenance="0" data-created-at="1360098729.05091" data-numeric-reference-id="" data-reference-uuid="0d76957f-2f64-4654-99ea-f67974116b32" data-entity="StatusUpdate" data-poster="59538173" data-uuid="b9e85465-5b91-4b5c-a443-c4e37d716481"></div><div class="feedItemArea" data-comment-maintenance="0" data-created-at="1360103761.624714" data-numeric-reference-id="" data-reference-uuid="c2c201ca-a391-4fff-aec2-9823a3e90815" data-entity="StatusUpdate" data-poster="45508368" data-uuid="11149a32-38cf-4919-b081-0bd39bdc49eb"></div>
     <div class="feedItemArea" data-comment-maintenance="0" data-created-at="1360103737.756343" data-numeric-reference-id="" data-reference-uuid="997824a2-994c-467f-bfbe-aa4beb1e402f" data-entity="StatusUpdate" data-poster="38033716" data-uuid="bc075882-771c-4ee2-ad28-dbf21fbf3bd3"></div>  

澄清一下,这只是 HTML 代码的一部分。提要上有许多这样的类,因为每个类都代表一个用户的帖子。此外,每个类中都有多个,例如用户的链接和用户的个人资料图片。但是,我想删除与黑名单上的任何海报 ID 相同的完整 feedItemArea 类。

我希望我已经足够清晰和简洁,以便于帮助,但如果需要任何其他信息来帮助我,请告诉我,我会发布它。我的问题是是什么导致childrenundefined?提前致谢。

4

2 回答 2

1

JavaScript 区分大小写,它childNodes不是childnodes. 顺便说一句,由于您可能只想迭代元素节点(没有文本节点、注释等),请使用childrencollection。此外,您几乎不需要window.onload, 因为 GreaseMonkey 脚本默认在 DOMready上执行。

于 2013-02-05T23:28:27.307 回答
1

大写!

var children = document.getElementById('feedReloadArea').child n节点
于 2013-02-05T23:29:06.370 回答