码迷,mamicode.com
首页 > 其他好文 > 详细

DOMの劫持

时间:2016-06-02 06:08:55      阅读:169      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

写前面

对于运行商的劫持 其中有 

把原始页面放入iframe中 再来个同级广告恶心你的这种问题   想到的解决方案是检测出是否被嵌入一个iframe中  然后href跳出!但是并没有用!

有解决方案的 请分享~

---------------------------------------------------------

对dom的监控是Mutation做的事情 不过那个东西是异步的 也就是说 没法在渲染之前就进行操作

在低版本ie中 对于想劫持dom这种事情根本就是做梦  因为那些‘古董’是没有原型链概念的!

来个对appendChild 劫持的例子 存在于Node中

如下

{
        const acd = Node.prototype.appendChild;

        Node.prototype.appendChild = function(...a){
            if(/script/i.test(a[0].nodeName)&&
                !/([\s\S]+)(?:\.miku\.js)/.test(a[0].src)
            ){
                return console.warn(‘...‘);
            }
            acd.apply(this , a);
        };
     }

接下来 如果append一个script标签 让它的src为a.js  那么就不会成功

只有让script标签的src 以.miku.js结尾才不会被劫持

当然也可以对get set进行劫持  对于innerHTML 如下

{
            const Et = Element.prototype; 
            const fn = Object.getOwnPropertyDescriptor(Et, ‘innerHTML‘);
            Object.defineProperties(Et , {
                innerHTML : {
                     get(){    
                         return fn.get.apply(this,arguments);  
                     }
                     ,set(s){
                         fn.set.apply(this,[new Array(1e1).join(s)]); 
                     }
                }
            });
        }

        const d = document.createElement(‘div‘);
        d.innerHTML = ‘萌萌萌‘;

整个dom都在掌握之中了!

但也并非所有属性方法都是可以劫持的 你可以自己试试

规范太乱 还是不能过于依赖这东西。。

DOMの劫持

标签:

原文地址:http://www.cnblogs.com/daidaidai/p/5551616.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!