如何使用Greasemonkey和Jquery隐藏具有特定类的HTML元素?

时间:2014-02-25 16:50:43

标签: jquery greasemonkey

这个news site(卫报)有一个小框架,显示在页面的右下角,代码如下:

<div class="initially-off social-cta-overlay">

    <div class="social-cta-overlay-content"></div>

</div>

我隐藏了内部div的内部内容,因为它们并不重要。我编写了一个Greasemonkey脚本,它使用JQuery隐藏此框,因为它出现在每个页面上:

// ==UserScript==
// @name        hide-guardian-ad
// @namespace   guardian
// @description Hides the Guardian social media frame
// @version     1
// @grant       none
// ==/UserScript==

// @require       http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js

$(".social-cta-overlay").hide()

我安装了脚本,但没有任何反应,盒子仍在那里。

2 个答案:

答案 0 :(得分:12)

该脚本有3个问题(最差的):

  1. @require指令在the metadata block之外。这意味着Greasemonkey将其忽略为普通的javascript注释。
  2. 没有@include@match指令。这意味着该脚本将在每个站点的每个页面和iframe上触发! (崩溃其中一些,并攫取资源。)
  3. @grant none表示the script will interfere with and crash all or part of many sites
  4. 此脚本有效:

    // ==UserScript==
    // @name        hide-guardian-ad
    // @include     http://www.theguardian.com/*
    // @description Hides the Guardian social media frame
    // @require     http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
    // @grant       GM_addStyle
    // ==/UserScript==
    
    $(".social-cta-overlay").hide()
    

答案 1 :(得分:0)

试试这个:

$(document).find(".social-cta-overlay").hide();