当前位置: 首页 > 面试题库 >

如何使用greasemonkey有选择地从网站中删除内容

边健
2023-03-14
问题内容

我尝试修改的内容具有一系列<div>条目,并且在每个<div>条目中还有其他条目。没有id标签可以帮助您。我希望脚本执行的操作是检查每个<div>条目的内容并查找一些文本。这将用于确定整个’‘条目是否被删除/隐藏。这可能吗?怎么样?

下面是一个例子。页面中有几个这样的<div class="foo bar">标签,我想删除/隐藏标签中的文本为“是”
的标签。因此,在此示例中,整个事情将被删除/隐藏。

<div class="entry">

<div class="fooPhoto"><a href="Addfoo.jsp?tid=954102"><img class="person" src="http://static.barfoo.com/images/site/icons/dude.png" border="0" width="24" height="24" onerror="this.src='images/site/icons/dude.png'" title="Photo Unavailable" alt="Photo Unavailable" ></a></div>

<div class="fooAvg">4.7</div>

<div class="foo bar">Yes</div>

<div class="fooShare">
<a class="shareEmail" href="referral.jsp?sid=882&tid=954102&pgid=3">Share using email</a>
</div>

</div><!-- closes entry -->

问题答案:

对于此类问题,请发布指向目标页面的链接。或者,如果确实不可能,则将页面保存到pastebin.com并链接到该页面。

无论如何,使用jQuery contains()选择器对您问题的一般 答案并不难。这样的事情会起作用:

// ==UserScript==
// @name     _Remove annoying divs
// @include  http://YOUR_SERVER/YOUR_PATH/*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==
//- The @grant directive is needed to restore the proper sandbox.

/*--- Use the jQuery contains selector to find content to remove.
    Beware that not all whitespace is as it appears.
*/
var badDivs = $("div div:contains('Annoying text, CASE SENSITIVE')");

badDivs.remove ();

//-- Or use badDivs.hide(); to just hide the content.

更新新澄清的问题/代码

在您的特定示例中,您将使用以下代码:

var badDivs = $("div.entry div.foo:contains('Yes')");

badDivs.parent ().remove ();

更新注释中指定的站点:
请注意,无需搜索文本,因为该站点方便地为键div提供了isHot或类notHot

// ==UserScript==
// @name     _Unless they're hot, they're not (shown).
// @include  http://www.ratemyprofessors.com/SelectTeacher.jsp*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @grant    GM_addStyle
// ==/UserScript==
//- The @grant directive is needed to restore the proper sandbox.

var badDivs = $("#ratingTable div.entry").has ("div.notHot");

badDivs.remove ();

最后,对于动态(AJAX驱动)页面,

使用MutationObserverwaitForKeyElements。(WaitForKeyElements在静态页面上也可以正常工作。)

这是将上面的脚本重写为AJAX感知的:

// ==UserScript==
// @name     _Unless they're hot, they're not (shown).
// @include  http://www.ratemyprofessors.com/SelectTeacher.jsp*
// @require  http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
// @require  https://gist.github.com/raw/2625891/waitForKeyElements.js
// @grant    GM_addStyle
// ==/UserScript==
//- The @grant directive is needed to restore the proper sandbox.

waitForKeyElements ("#ratingTable div.entry", deleteNotHot);

function deleteNotHot (jNode) {
    if (jNode.has("div.notHot").length) {
        jNode.remove ();
    }
}


 类似资料:
  • 问题内容: 此代码不适用于MySQL 5.0,如何重写使其正常工作 我想删除没有唯一ID的列。我会在大多数情况下添加唯一的一个ID(我尝试了in语法,它也不起作用)。 问题答案: (子)查询返回结果 集 。因此,您需要使用,而不是在子句中使用。 此外,如该答案所示,您不能在同一查询中的子查询中修改同一表。但是,您可以然后在单独的查询中进行嵌套,也可以嵌套另一个子查询并为内部子查询结果添加别名(尽管

  • 问题内容: 我是AngularJS的新手。我进行了很多搜索,但是并不能解决我的问题。 我第一次在选择框中得到一个空白选项。 这是我的HTML代码 JS 但这似乎不起作用。我该如何解决?这是JSFiddle演示 问题答案: 当传递给的一组选项中不存在被引用的值时,将生成空值。这样做是为了防止意外选择模型:AngularJS可以看到初始模型是未定义的还是未在选项集中,并且不想自行决定模型的值。 简而言

  • 我已经实现了从pdf中删除图层的功能,但问题是,我在图层上绘制的内容无法删除。下面是我用来删除图层的代码:

  • 如何使用按钮onClick从ListView中删除所有内容?当我尝试“fullCourseList.clear();”时,我无法添加更多课程,只有再次访问页面后,页面才会刷新

  • 问题内容: 我想知道当用户单击注销时是否可以删除网站的所有cookie,因为我将其用作删除cookie的功能,但无法正常工作: 有没有一种方法可以删除PHP中某个域的Cookie? 问题答案: PHP setcookie() 从该页面获取的信息将取消设置您域的所有cookie: http://www.php.net/manual/zh/function.setcookie.php#73484

  • 问题内容: 如何从选择框中删除项目或向其中添加项目?我正在运行jQuery,这应该使任务更轻松。下面是一个示例选择框。 问题答案: 删除一个选项: 添加一个选项: