Greasemonkey代码不删除节点(甚至不执行)

时间:2014-08-09 09:37:59

标签: javascript html

这是我要删除的HTML结构(从twitch.tv中提取的代码)

<div class="stream item" style="width: 300px;">
  <div class="thumb js-var-height" style="height: 148px;">
    <a href="/nicegametv" data-bindattr-491="491" data-ember-action="492" class="cap" data-channel-link="data-channel-link">
      <img src="http://static-cdn.jtvnw.net/previews-ttv/live_user_nicegametv-320x200.jpg" data-bindattr-493="493">
    </a>
    <script id="metamorph-360-start" type="text/x-placeholder"></script><a original-title="League of Legends" href="/directory/game/League%20of%20Legends" data-href="/directory/game/League%20of%20Legends" data-bindattr-494="494" data-ember-action="495" class="boxart">
      <img src="http://static-cdn.jtvnw.net/ttv-boxart/League%20of%20Legends-138x190.jpg" data-placeholder="http://static-cdn.jtvnw.net/ttv-boxart/League%20of%20Legends-138x190.jpg" data-bindattr-496="496">
    </a><script id="metamorph-360-end" type="text/x-placeholder"></script>
  </div>
  <div class="meta">
    <p class="title">
      <script id="metamorph-361-start" type="text/x-placeholder"></script><a href="/nicegametv" title="SKT T1 K vs Najin sword NLB Final" data-bindattr-497="497" data-ember-action="498" data-channel-link="data-channel-link">
        <script id="metamorph-362-start" type="text/x-placeholder"></script>SKT T1 K vs Najin sword NLB Final<script id="metamorph-362-end" type="text/x-placeholder"></script>
      </a><script id="metamorph-361-end" type="text/x-placeholder"></script>
      <script id="metamorph-363-start" type="text/x-placeholder"></script><script id="metamorph-363-end" type="text/x-placeholder"></script>
    </p>
    <p class="info">
      <script id="metamorph-364-start" type="text/x-placeholder"></script>56,951<script id="metamorph-364-end" type="text/x-placeholder"></script>
      viewers on
      <a href="/nicegametv/profile" data-bindattr-499="499" data-ember-action="500">
        <script id="metamorph-365-start" type="text/x-placeholder"></script>nicegametv<script id="metamorph-365-end" type="text/x-placeholder"></script>
      </a>
    </p>
  </div>
</div>

这是我用来做它的油脂猴代码

var killIt=["Hearthstone: Heroes of Warcraft", "League of Legends", "Minecraft"];
var el = document.getElementsByClassName("boxart");
//runthrough elements killing certain ones
for (i = 0; i < el.length; i++) 
    {
        for (j=0;j<killIt.length; j++) 
            {
                if (el[i].getAttribute("original-title")==killIt[j]) 
                    {
                        var ely=el[i].parentNode;
                        ely.parentNode.removeChild(ely);
                    }
            }
    }   
}

我尝试将其制作成普通的HTML文件并使用Firefox运行,一切正常。然而,当我试图在抽搐时实际执行它时它根本不起作用。

我想我不知道关于油脂的事情。

JSFiddle

1 个答案:

答案 0 :(得分:-1)

我稍微修改了你的代码,并加入了这个:

window.onload=function(){
    var killIt=["http://www.twitch.tv/directory/game/Minecraft",  "http://www.twitch.tv/directory/game/League%20of%20Legends", "http://www.twitch.tv/directory/game/Hearthstone%3A%20Heroes%20of%20Warcraft"];
    var el = document.getElementsByClassName("boxart");
    for (i = 0; i < el.length; i++) 
        {
            for (j=0;j<killIt.length; j++) 
                {
                    if (el[i].parentNode.href==killIt[j]) 
                        {
                            el[i].parentNode.parentNode.parentNode.remove();
                        }
                }
        }
};

我添加了window.onload函数,因为Greasemonkey和Tampermonkey在HTML完全加载之前有执行代码的倾向。

我很难找到你的original-title属性,并决定转而使用href,这总是存在(我也将killIt数组中的值更改为href)。 / p>

最后,我这样做是为了删除页面上整个游戏项目的节点(而不仅仅是boxart),如果这是你想要的?