Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用greasemonkey有选择地从网站中删除内容_Javascript_Html_Greasemonkey_Webpage_Tampermonkey - Fatal编程技术网

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

Javascript 如何使用greasemonkey有选择地从网站中删除内容,javascript,html,greasemonkey,webpage,tampermonkey,Javascript,Html,Greasemonkey,Webpage,Tampermonkey,我试图修改的内容有一系列条目,其中每个条目中都有其他条目。这里没有可帮助的id标记。我想要脚本做的是检查每个条目的内容并查找一些文本。这将用于确定是否删除/隐藏整个“”条目。这可能吗?怎么做 下面是一个例子。页面中有几个这样的标签,我想删除/隐藏那些标签中的文本表示“是”的标签。因此在本例中,整个内容将被删除/隐藏 <div class="entry"> <div class="fooPhoto"><a href="Addfoo.jsp?tid=954102"&g

我试图修改的内容有一系列
条目,其中每个条目中都有其他
条目。这里没有可帮助的
id
标记。我想要脚本做的是检查每个
条目的内容并查找一些文本。这将用于确定是否删除/隐藏整个“”条目。这可能吗?怎么做

下面是一个例子。页面中有几个这样的标签,我想删除/隐藏那些
标签中的文本表示“是”的标签。因此在本例中,整个内容将被删除/隐藏

<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 -->

4.7
对

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

总之,对你的问题的一般的答案并不难。类似这样的方法会奏效:

// ==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 ();


注释中指定的站点的更新:
请注意,不需要搜索文本,因为站点方便地为key 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驱动)页面, 使用
MutationObserver
或。(WaitForkMents在静态页面上也可以正常工作。)

下面是重写为支持AJAX的上述脚本:

/==UserScript==
//@name\u除非它们很热,否则它们不会(显示)。
//@包括http://www.ratemyprofessors.com/SelectTeacher.jsp*
//@需要http://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js
//@需要https://gist.github.com/raw/2625891/waitForKeyElements.js
//@grant GM_addStyle
//==/UserScript==
//-需要@grant指令来恢复适当的沙箱。
WaitForkEyements(#评级表div.entry),deleteNotHot);
函数deleteNotHot(jNode){
if(jNode.has(“div.notHot”).长度){
jNode.remove();
}
}

即使它确实做了一些事情,您的示例似乎也不起作用。仅删除包含文本的div是不够的。该div所在的div也必须删除。感谢为您的问题添加一些详细信息。查看更新后的答案。实际上foobar中有一个空格,因此它是“foobar”。那么代码是什么?一行将更改为:
var badDivs=$(“div.entry div.foo:contains('Yes')(全部在一行上)那么您的意思是,如果div在类名中有空格,您只需要使用其中的第一个单词?我试过了,但没用。实际上,entry div也是两个单词。