标签:
写前面
对于运行商的劫持 其中有
把原始页面放入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都在掌握之中了!
但也并非所有属性方法都是可以劫持的 你可以自己试试
规范太乱 还是不能过于依赖这东西。。
标签:
原文地址:http://www.cnblogs.com/daidaidai/p/5551616.html