在蒸汽市场上,列表的代码如下:
$value = $ret->src;
使用一些Steam增强器插件,它会将<span id="listing_285218391330225741_name" class="market_listing_item_name" style="color: #CF6A32;">StatTrak™ M4A1-S | Cyrex (Minimal Wear)
<span style="color:red">
(warning)
</span>
</span>
添加到任何带有名称标签的项目中。
由于每个商家信息都有<span style="color:red"> (warning) </span>
,是否有一种方法可以使用javascript(Tampermonkey)删除任何不包含&#34;警告&#34 ;?的spans
换句话说,只显示带有名称标签的商品。
答案 0 :(得分:1)
一般来说:
您可以使用jQuery执行第1步到第3步:
load
但是,因为警告是通过插件添加的(和/或某些市场页面可能是通过AJAX技术添加的),很可能您的Tampermonkey脚本将在页面之前运行完成你期望/需要它的方式。
为了弥补这一点,使用像waitForKeyElements()这样的技术,并找到一些条件,你可以知道&#34;插件&#34;你提到的已经完成了它的工作。
由于您没有提供详细信息,我们将假设插件在窗口// ==UserScript==
// @name _Steam Market, hide items that DON't have a warning!?
// @include http://YOUR_SERVER.COM/YOUR_PATH/*
// @match *://steamcommunity.com/market*
// @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 work around a design change
introduced in GM/TM 1.0. It restores the sandbox.
*/
window.addEventListener ("load", function () {
waitForKeyElements (".market_listing_row_link", hideUnwarnedRows);
}, false);
function hideUnwarnedRows (jNode) {
if (jNode.has (".market_listing_item_name > span:contains('(warning)')").length) {
return;
}
jNode.hide ();
}
事件触发之前完成。
所以,这里是一个完整的Tampermonkey脚本,可以在AJAX和静态场景中运行(你可能需要根据这个&#34;插件提供额外的延迟&#34;):
var userExists = _.some(data.location.users, function (user) {
return user.id === data.activeUser.id;
});
答案 1 :(得分:0)
如果您可以保证警告的范围样式为红色,则可以
var elms = document.querySelectorAll('.market_listing_item_name > span[style="color:red"]');
获得每个警告范围。然后,通过循环遍历所有父母并应用样式来隐藏父母
elms.forEach(function(el){
el.parentElement.style.display = "hidden";
}