Greasy Fork

jsKillAD

查杀页面浮动广告

目前为 2015-01-12 提交的版本。查看 最新版本

// ==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
// ==/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) {}
	});
})();