V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Can I use?
http://caniuse.com/
Less
http://lesscss.org
Cool Libraries
Bootstrap from Twitter
Jetstrap
shonky
V2EX  ›  CSS

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

  •  
  •   shonky · 2018-05-04 10:08:45 +08:00 via Android · 5046 次点击
    这是一个创建于 2183 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    不过去广告还是交给 adblock ublock 之类浏览器扩展好了
    shonky
        3
    shonky  
    OP
       2018-05-04 10:19:39 +08:00 via Android
    @old9 不是的,刷新下,类名都会变的。
    手机上使用,类似 pwa 那样。因为会在手机上看电视电影什么的。电脑上就会用油猴了。
    hourann
        4
    hourann  
       2018-05-04 10:26:53 +08:00 via iPhone
    一个思路是先选择所有有 class 属性的标签,然后遍历,筛选出长度为 10 的,然后再做一次 select
    rabbbit
        5
    rabbbit  
       2018-05-04 10:27:19 +08:00
    那个广告的高是不变的吗?试试
    *>img[height^="84.375"]
    或者按网址
    *>img[src^="https://jbokhm.cn"]
    shonky
        6
    shonky  
    OP
       2018-05-04 10:36:06 +08:00 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
       2018-05-04 10:36:32 +08:00 via Android
    @hourann 谢谢回复,不过现在还是小白,基本操作不会。
    whypool
        8
    whypool  
       2018-05-04 10:38:39 +08:00
    去掉页面的 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
       2018-05-04 10:41:28 +08:00 via Android
    @whypool 是这样的。我姐喜欢上这网站看电视,我就想用 fapp 做一个 app 出来,把广告都弄掉。
    shonky
        10
    shonky  
    OP
       2018-05-04 10:42:47 +08:00 via Android
    @whypool 复制粘贴了一波,对这网站还是没用。不过还是谢谢大佬了。
    Carseason
        11
    Carseason  
       2018-05-04 10:51:58 +08:00 via iPhone
    根据固定字符来判断,比如你图片的 class=abcd***,则使用[class^="abcd"]来匹配 class 类以 abcd 开头的类,或[class$="abcd"]来匹配以 abcd 结尾的,又或者[class*="abcs"]来匹配 class 里包含 abcd 的元素
    如果是一个无固定值蠢随机的你则要用另外的元素来判断位置,或者找出 js 来屏蔽
    yu099
        12
    yu099  
       2018-05-04 10:54:05 +08:00 via Android
    cnbeta 也这样的,去不掉
    rabbbit
        13
    rabbbit  
       2018-05-04 10:55:42 +08:00
    试试
    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
       2018-05-04 10:57:13 +08:00 via Android
    @Carseason 是随机的。知道 js 了,怎么屏蔽。位置也知道,一直弄.class~div,我把所有的 class 都放了进去,也没用。
    shonky
        15
    shonky  
    OP
       2018-05-04 10:57:39 +08:00 via Android
    @yu099 我成功弄掉了另一网站类似的广告。
    shonky
        16
    shonky  
    OP
       2018-05-04 10:57:54 +08:00 via Android
    @rabbbit 好的
    Carseason
        17
    Carseason  
       2018-05-04 11:01:57 +08:00 via iPhone
    @shonky 如果只有一个随机类,没别的固定类的话你就得修改 js 了,如果是单独的 js 生成的可以选择屏蔽 js,如果不是可以用位置来确定,比如前一个类为 class a,则用.a>*之类的写法来屏蔽,再或者是看插件是否支持正则的使用,通过正则修改 js 的参数等等,具体看你插件的写法
    shonky
        18
    shonky  
    OP
       2018-05-04 11:05:45 +08:00 via Android
    @rabbbit 大佬,成功去了首页的广告,但会留下一个关闭的小图标。不过没关系。还有在点进去,又会出现在中间部位的广告,如图 https://i.loli.net/2018/05/04/5aebcd6b8b585.png

    ,还是按大佬这 js,改动下就可以吗?
    shonky
        19
    shonky  
    OP
       2018-05-04 11:07:03 +08:00 via Android
    @Carseason Fusion APP,我用的是这个来做 app 的。不是弄插件。谢谢大佬指点。
    shonky
        20
    shonky  
    OP
       2018-05-04 11:10:52 +08:00 via Android
    @rabbbit https://i.loli.net/2018/05/04/5aebcf032b164.png
    大佬,到播放界面 ,上面广告,还有中间广告又都出来了。
    rabbbit
        21
    rabbbit  
       2018-05-04 11:15:40 +08:00
    中间的
    document.querySelector('div[class^="hengfu"]').style.display = "none"
    rabbbit
        22
    rabbbit  
       2018-05-04 11:21:18 +08:00
    上边的,不过这样性能堪忧啊
    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
       2018-05-04 11:22:12 +08:00 via Android
    @rabbbit 大佬首页弄掉了一个上面关闭图标在右方的广告,现在又出来一个关闭图标在左边的广告。也是在上方。在刷新下,又出现个在下方的广告。
    Delete Link

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

    大佬,有空在回复。不急。
    谢谢大佬了。
    shonky
        24
    shonky  
    OP
       2018-05-04 11:22:36 +08:00 via Android
    @rabbbit 性能是什么意思,会卡吗
    Carseason
        25
    Carseason  
       2018-05-04 11:25:30 +08:00 via iPhone
    我看了你要屏蔽的网站,都是用 js 生成的新元素,那么你就不要用 div 类来屏蔽,直接找出脚本把网站屏蔽掉就可以了
    rabbbit
        26
    rabbbit  
       2018-05-04 11:27:12 +08:00
    刷新时可能会卡吧,下边那个广告我看不到,是不是电信运行商插的.
    shonky
        27
    shonky  
    OP
       2018-05-04 11:27:24 +08:00 via Android
    @Carseason 找脚本,找到了。不会处理。
    大佬,我还处于边看教程边上路的时候。
    shonky
        28
    shonky  
    OP
       2018-05-04 11:28:09 +08:00 via Android
    @rabbbit 是屏蔽了上面广告,多刷新了几次,有概率出现。大佬。
    DT27
        29
    DT27  
       2018-05-04 11:30:03 +08:00
    表示 uBlock Origin 打开这网站看不到有广告~
    shonky
        30
    shonky  
    OP
       2018-05-04 11:30:07 +08:00 via Android
    @rabbbit 又来了上面的,关闭图标位置变了。https://i.loli.net/2018/05/04/5aebd392570dc.png
    shonky
        31
    shonky  
    OP
       2018-05-04 11:30:26 +08:00 via Android
    @DT27 我姐用手机看。
    Carseason
        32
    Carseason  
       2018-05-04 11:30:52 +08:00 via iPhone
    ||metvb.com/js/gwunggou/*.js
    一条 js 屏蔽就足够了,具体写法自己参考下软件的写法
    shonky
        33
    shonky  
    OP
       2018-05-04 11:33:18 +08:00 via Android
    @Carseason *代表的是 var 变量的名字吗
    rabbbit
        34
    rabbbit  
       2018-05-04 11:35:56 +08:00
    learnshare
        35
    learnshare  
       2018-05-04 11:36:59 +08:00
    禁用 JS
    Carseason
        36
    Carseason  
       2018-05-04 11:37:09 +08:00 via iPhone
    @shonky 通配符
    lrz0lrz
        37
    lrz0lrz  
       2018-05-04 12:09:32 +08:00
    页面结构固定吗?
    为什么不用 div:nth-child(1) 这些选择器呢?
    shonky
        38
    shonky  
    OP
       2018-05-04 12:33:06 +08:00 via Android
    @lrz0lrz 好的,试试。
    shonky
        39
    shonky  
    OP
       2018-05-04 12:33:24 +08:00 via Android
    @rabbbit 具体怎么操作呢,大佬
    meszyouh
        40
    meszyouh  
       2018-05-04 13:15:53 +08:00
    ```
    (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
       2018-05-04 13:28:23 +08:00 via Android
    @meszyouh 不明觉深。
    好的,大佬 。
    shonky
        42
    shonky  
    OP
       2018-05-04 13:30:52 +08:00 via Android
    @meszyouh 大佬 不行。一个广告都没去掉。
    shonky
        43
    shonky  
    OP
       2018-05-04 13:33:09 +08:00 via Android
    @meszyouh 大佬 ,去除前后三个点。广告没有了。谢谢大佬 。
    SingeeKing
        44
    SingeeKing  
       2018-05-04 13:34:23 +08:00
    @shonky #43 那三个点是 Markdown 标记……
    3a3Mp112
        45
    3a3Mp112  
       2018-05-04 13:36:59 +08:00
    能不能直接把网址发出来呀。
    shonky
        46
    shonky  
    OP
       2018-05-04 13:38:23 +08:00 via Android
    @3a3Mp112 发了啊。www.metvb.com
    shonky
        47
    shonky  
    OP
       2018-05-04 13:38:58 +08:00 via Android
    @SingeeKing 有点注释的感觉。
    3a3Mp112
        48
    3a3Mp112  
       2018-05-04 13:41:32 +08:00
    @shonky
    订阅 easylist china 规则即可。
    leaves7i
        49
    leaves7i  
       2018-05-04 23:52:42 +08:00 via Android
    给你个思路。看下父元素和子元素。一般来说子元素不会那么随机。然后找位置、大小等等属性抓取元素
    shonky
        50
    shonky  
    OP
       2018-05-06 00:11:41 +08:00 via Android
    @3a3Mp112 好的
    shonky
        51
    shonky  
    OP
       2018-05-06 00:11:47 +08:00 via Android
    @leaves7i 谢谢
    shonky
        52
    shonky  
    OP
       2018-05-06 00:13:22 +08:00 via Android
    @3a3Mp112 手机上也可以这样?全能吗
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5467 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 37ms · UTC 03:40 · PVG 11:40 · LAX 20:40 · JFK 23:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.