基于JavaScript代码去掉H5页面中的头尾及广告部分(支持 Android 和 iOS)2(难度升级)

前段时间做了一篇总结:基于JavaScript代码去掉H5页面中的头尾及广告部分(支持 Android 和 iOS),不过好景不长,黑科技和反常规的技术又来了,情况是这样的,如果div 被 id 或 class 标识了,那么我们完全可以按照之前的文章通过js来隐藏掉,但是道高一尺魔高一丈,如果这个div没有被 id 或 class 做标识,如图:



似乎看着无解了,不过,作为开发者,怎么可以放弃呢,通过分析和参考,可以采取如下两种策略:

1,通过控制 div 的显示或直接移除该div(谈何容易啊);

2,通过隐藏 div 里面的iframe来实现(通常div下会嵌套一个iframe框架,本案例就是如此);


先看第二种方案,依然要通过知道iframe的name,然后再进一步获取document来操作它里面的div,例如:

<span style="font-size:14px;">function displays(){
    document.getElementById("iframeA").contentWindow.document.getElementById("aa").style.display = "none";
}</span>


但是,刚才截图可以看出,子iframe依然没有给出name,果断放弃第二种方案;


采用第一种方案,就是获取该div,没有id和class,有点郁闷,思路可以抬高一点,如果全局获取所有的div,然后是否能找到这个特殊的div,然后直接移除或隐藏,好吧,经历一番搜索和测试后,给出如下代码:


<span style="font-size:14px;"><script>
     window.onload=function(){
        var div = document.getElementsByTagName("div");
        for (var i=div.length-1; i>=0; i--)    {
            if (div[i].innerHTML.indexOf("some")>=0) document.body.removeChild(div[i]);
        }
    };
</script></span>


iOS和Android都完全支持,从代码可以看出先通过innerHTML得到div里面的字符串,然后再通过indexOf方法去获取里面是否有some这个字符串,如果>0 就说明找到我们想要的div了,然后移除它就好,就这样,被我征服;

以下是放入iOS或Android里面的代码片段,供参考:



特别推荐优质APP:IT面试宝典




猜你喜欢

转载自blog.csdn.net/mapboo/article/details/51680055