V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
shonky
V2EX  ›  CSS

如何用 css 选择器选择长度为 10 的 class

  •  
  •   shonky · May 4, 2018 via Android · 5800 views
    This topic created in 2917 days ago, the information mentioned may be changed or developed.

    最近在弄去广告操作,但基础不怎么行,基本是看网上教程弄的,按网上说的.class~div 并不能去掉广告,我就想能不能通过选择长为 10 的类来去掉广告。 求大佬指点。

    52 replies    2018-05-06 00:13:22 +08:00
    shonky
        1
    shonky  
    OP
       May 4, 2018 via Android
    old9
        2
    old9  
       May 4, 2018
    看起来都是 mYbKXYDA 前缀?
    如果确认都是这个前缀的话可以用属性选择符 [attr^=value],[class^=mYbKXYDA] {display:none;}

    不过去广告还是交给 adblock ublock 之类浏览器扩展好了
    shonky
        3
    shonky  
    OP
       May 4, 2018 via Android
    @old9 不是的,刷新下,类名都会变的。
    手机上使用,类似 pwa 那样。因为会在手机上看电视电影什么的。电脑上就会用油猴了。
    hourann
        4
    hourann  
       May 4, 2018 via iPhone
    一个思路是先选择所有有 class 属性的标签,然后遍历,筛选出长度为 10 的,然后再做一次 select
    rabbbit
        5
    rabbbit  
       May 4, 2018
    那个广告的高是不变的吗?试试
    *>img[height^="84.375"]
    或者按网址
    *>img[src^="https://jbokhm.cn"]
    shonky
        6
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit http://www.metvb.com
    就这个网站。
    大佬,按你的打了一次。试了。没用呢。

    var style=".wrap~div,*>img[height^="84.375"]{display:none !important}";

    var myStyleElement=document.createElement("style");
    myStyleElement.innerHTML=style;
    document.querySelector("head").appendChild(myStyleElement);
    document.querySelector("html").appendChild(myStyleElement);
    shonky
        7
    shonky  
    OP
       May 4, 2018 via Android
    @hourann 谢谢回复,不过现在还是小白,基本操作不会。
    whypool
        8
    whypool  
       May 4, 2018
    去掉页面的 iframe 能干掉很多广告
    把下面代码保存为书签,有广告的时候点一下书签就行

    javascript:(function(){%20var%20im%20=%20document.getElementsByTagName('iframe');%20if(im%20&&%20im.length){%20for(var%20i%20=%200;i<im.length;i++){%20var%20p%20=%20im[i];%20p.parentNode.removeChild(p);%20}%20}%20})();
    shonky
        9
    shonky  
    OP
       May 4, 2018 via Android
    @whypool 是这样的。我姐喜欢上这网站看电视,我就想用 fapp 做一个 app 出来,把广告都弄掉。
    shonky
        10
    shonky  
    OP
       May 4, 2018 via Android
    @whypool 复制粘贴了一波,对这网站还是没用。不过还是谢谢大佬了。
    Carseason
        11
    Carseason  
       May 4, 2018 via iPhone
    根据固定字符来判断,比如你图片的 class=abcd***,则使用[class^="abcd"]来匹配 class 类以 abcd 开头的类,或[class$="abcd"]来匹配以 abcd 结尾的,又或者[class*="abcs"]来匹配 class 里包含 abcd 的元素
    如果是一个无固定值蠢随机的你则要用另外的元素来判断位置,或者找出 js 来屏蔽
    yu099
        12
    yu099  
       May 4, 2018 via Android
    cnbeta 也这样的,去不掉
    rabbbit
        13
    rabbbit  
       May 4, 2018
    试试
    var a = document.querySelector('a>img[src^="https://jbokhm.cn"],a>img[src^="http://dvei.fendoutime.com"]')
    a.parentNode.parentNode.removeChild(a.parentNode)
    shonky
        14
    shonky  
    OP
       May 4, 2018 via Android
    @Carseason 是随机的。知道 js 了,怎么屏蔽。位置也知道,一直弄.class~div,我把所有的 class 都放了进去,也没用。
    shonky
        15
    shonky  
    OP
       May 4, 2018 via Android
    @yu099 我成功弄掉了另一网站类似的广告。
    shonky
        16
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit 好的
    Carseason
        17
    Carseason  
       May 4, 2018 via iPhone
    @shonky 如果只有一个随机类,没别的固定类的话你就得修改 js 了,如果是单独的 js 生成的可以选择屏蔽 js,如果不是可以用位置来确定,比如前一个类为 class a,则用.a>*之类的写法来屏蔽,再或者是看插件是否支持正则的使用,通过正则修改 js 的参数等等,具体看你插件的写法
    shonky
        18
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit 大佬,成功去了首页的广告,但会留下一个关闭的小图标。不过没关系。还有在点进去,又会出现在中间部位的广告,如图 https://i.loli.net/2018/05/04/5aebcd6b8b585.png

    ,还是按大佬这 js,改动下就可以吗?
    shonky
        19
    shonky  
    OP
       May 4, 2018 via Android
    @Carseason Fusion APP,我用的是这个来做 app 的。不是弄插件。谢谢大佬指点。
    shonky
        20
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit https://i.loli.net/2018/05/04/5aebcf032b164.png
    大佬,到播放界面 ,上面广告,还有中间广告又都出来了。
    rabbbit
        21
    rabbbit  
       May 4, 2018
    中间的
    document.querySelector('div[class^="hengfu"]').style.display = "none"
    rabbbit
        22
    rabbbit  
       May 4, 2018
    上边的,不过这样性能堪忧啊
    var list = Array.prototype.slice.call(document.all)
    list.forEach(
    function(i){
    if (i.className.length === 10) {i.parentNode.removeChild(i)}
    }
    )
    shonky
        23
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit 大佬首页弄掉了一个上面关闭图标在右方的广告,现在又出来一个关闭图标在左边的广告。也是在上方。在刷新下,又出现个在下方的广告。
    Delete Link

    https://i.loli.net/2018/05/04/5aebd1aba4807.png

    大佬,有空在回复。不急。
    谢谢大佬了。
    shonky
        24
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit 性能是什么意思,会卡吗
    Carseason
        25
    Carseason  
       May 4, 2018 via iPhone
    我看了你要屏蔽的网站,都是用 js 生成的新元素,那么你就不要用 div 类来屏蔽,直接找出脚本把网站屏蔽掉就可以了
    rabbbit
        26
    rabbbit  
       May 4, 2018
    刷新时可能会卡吧,下边那个广告我看不到,是不是电信运行商插的.
    shonky
        27
    shonky  
    OP
       May 4, 2018 via Android
    @Carseason 找脚本,找到了。不会处理。
    大佬,我还处于边看教程边上路的时候。
    shonky
        28
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit 是屏蔽了上面广告,多刷新了几次,有概率出现。大佬。
    naver1
        29
    naver1  
       May 4, 2018
    表示 uBlock Origin 打开这网站看不到有广告~
    shonky
        30
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit 又来了上面的,关闭图标位置变了。https://i.loli.net/2018/05/04/5aebd392570dc.png
    shonky
        31
    shonky  
    OP
       May 4, 2018 via Android
    @DT27 我姐用手机看。
    Carseason
        32
    Carseason  
       May 4, 2018 via iPhone
    ||metvb.com/js/gwunggou/*.js
    一条 js 屏蔽就足够了,具体写法自己参考下软件的写法
    shonky
        33
    shonky  
    OP
       May 4, 2018 via Android
    @Carseason *代表的是 var 变量的名字吗
    rabbbit
        34
    rabbbit  
       May 4, 2018
    learnshare
        35
    learnshare  
       May 4, 2018
    禁用 JS
    Carseason
        36
    Carseason  
       May 4, 2018 via iPhone
    @shonky 通配符
    lrz0lrz
        37
    lrz0lrz  
       May 4, 2018
    页面结构固定吗?
    为什么不用 div:nth-child(1) 这些选择器呢?
    shonky
        38
    shonky  
    OP
       May 4, 2018 via Android
    @lrz0lrz 好的,试试。
    shonky
        39
    shonky  
    OP
       May 4, 2018 via Android
    @rabbbit 具体怎么操作呢,大佬
    meszyouh
        40
    meszyouh  
       May 4, 2018
    ```
    (function() {
    var children = $("body").children(":not(.wrap)"),
    el;
    var parser = /[a-zA-Z\d]{3,}/,
    reg;
    var filter = function(el, reg, level, counter) {
    if (level > 4) {
    return;
    }
    el.children().each(function() {
    var t = $(this);
    var id = el.attr("id"),
    className = el.attr("class").split(/\s+/);
    if (reg.test(id)) {
    counter.num++;
    }
    if (reg.test(className)) {
    counter.num++;
    }
    filter(t, reg, level + 1, counter);
    });
    if (counter.num >= 4 && level === 1) {
    el.remove();
    $("head").append(
    "<style>#" +
    el.attr("id") +
    "{position:static;height:0;transform:scale(0,0);overflow:hidden;}</style>"
    );
    }
    };
    children.each(function() {
    el = $(this);
    var id = el.attr("id"),
    match1,
    match2,
    className = el.attr("class");
    var counter = {
    num: 0
    };
    match1 = id.match(parser);
    match2 = className.match(parser);

    if (match1 || match2) {
    match1 = match1 || [""];
    match2 = match2 || [""];
    var str = match1[0].length > match2[0].length ? match1[0] : match2[0];
    reg = new RegExp(str, "i");

    filter(el, reg, 1, counter);
    }
    });
    $('[class*="hengfu"]').remove();
    })();
    ```
    试试这个
    shonky
        41
    shonky  
    OP
       May 4, 2018 via Android
    @meszyouh 不明觉深。
    好的,大佬 。
    shonky
        42
    shonky  
    OP
       May 4, 2018 via Android
    @meszyouh 大佬 不行。一个广告都没去掉。
    shonky
        43
    shonky  
    OP
       May 4, 2018 via Android
    @meszyouh 大佬 ,去除前后三个点。广告没有了。谢谢大佬 。
    SingeeKing
        44
    SingeeKing  
    PRO
       May 4, 2018
    @shonky #43 那三个点是 Markdown 标记……
    3a3Mp112
        45
    3a3Mp112  
       May 4, 2018
    能不能直接把网址发出来呀。
    shonky
        46
    shonky  
    OP
       May 4, 2018 via Android
    @3a3Mp112 发了啊。www.metvb.com
    shonky
        47
    shonky  
    OP
       May 4, 2018 via Android
    @SingeeKing 有点注释的感觉。
    3a3Mp112
        48
    3a3Mp112  
       May 4, 2018
    @shonky
    订阅 easylist china 规则即可。
    leaves7i
        49
    leaves7i  
       May 4, 2018 via Android
    给你个思路。看下父元素和子元素。一般来说子元素不会那么随机。然后找位置、大小等等属性抓取元素
    shonky
        50
    shonky  
    OP
       May 6, 2018 via Android
    @3a3Mp112 好的
    shonky
        51
    shonky  
    OP
       May 6, 2018 via Android
    @leaves7i 谢谢
    shonky
        52
    shonky  
    OP
       May 6, 2018 via Android
    @3a3Mp112 手机上也可以这样?全能吗
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5519 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 107ms · UTC 05:58 · PVG 13:58 · LAX 22:58 · JFK 01:58
    ♥ Do have faith in what you're doing.