// ==UserScript== // @name jsKillAD // @namespace jsKillAD // @description 查杀页面浮动广告 // @description:en Kill AD on page // @author xinggsf // @homepageURL https://greasyfork.org/zh-CN/scripts/7410-jskillad // updateURL https://greasyfork.org/scripts/7410-jskillad/code/jsKillAD.user.js // downloadURL https://greasyfork.org/scripts/7410-jskillad/code/jsKillAD.user.js // @encoding utf-8 // @modified 01/12/2015 // @include http://* // @include https://* // @exclude http://*.mail.*/* // @exclude http://*mimg.127.net/* // @exclude http://*.csdn.net/postedit/* // @exclude http://*share*.qq.com/* // @exclude http://*.gsmn.com.cn/* // @exclude http://*115.com/* // @run-at document-end // @grant none // @version 1.2 // @downloadURL none // ==/UserScript== (function () { var bc = Array.prototype.forEach;//Callback function getStyle(o, s) { if(o.style[s]){//内联样式 return o.style[s]; } if(document.defaultView && document.defaultView.getComputedStyle){//DOM //s = s.replace(/([A-Z])/g,'-$1').toLowerCase(); var x = document.defaultView.getComputedStyle(o,''); return x&&x.getPropertyValue(s); } } function testStyle(o) { var s = getStyle(o, "position"); return s === "fixed" || s === "absolute"; } function isFloatLay(o) { var x = o.offsetParent; return !x || x.tagName === "BODY" || x.tagName === "HTML"; } function delNode(x) { x.parentNode.removeChild(x); } function scan(el) { ["iframe", "img", "object", "embed"].forEach(function(s) { bc.call(el.getElementsByTagName(s), function(x) { while (x) { if (isFloatLay(x)) { //要删除的层得同时满足二个条件 if (testStyle(x)) {delNode(x);} break; }//else x = x.offsetParent; } }); }); } //document.addEventListener("DOMContentLoaded", function(){scan(document);}, false); scan(document); bc.call(frames, function(x) { try { scan(x.contentDocument); } catch (e) {} }); })();