Sina News Ad Remover
By Roger
—
Last update Sep 7, 2005
—
Installed
1,628 times.
//
// Copyright (c) 2005, wwr
//
// --------------------------------------------------------------------
//
// This is a Greasemonkey user script.
//
// To install, you need Greasemonkey: http://greasemonkey.mozdev.org/
// Then restart Firefox and revisit this script.
// Under Tools, there will be a new menu item to "Install User Script".
// Accept the default configuration and install.
//
// To uninstall, go to Tools/Manage User Scripts,
// select "Sina News Ad Remover", and click Uninstall.
//
// --------------------------------------------------------------------
//
// ==UserScript==
// @name Sina News Ad Remover
// @namespace http://gnor.net/
// @description Removes the box ads in the news page and cleans up the start page of news.sina.com.cn.
// @include http://*.sina.com.cn/*
// @version 0.0.8
// ==/UserScript==
// ChangeLog
// 0.0.8 : delete fAD (finance ad?)
// 0.0.7 : In 2007, sina news changed the news content page, which makes us easier to clean up :)
(function() {
if (!document.location.href.match('.?html')) {
// delete top tables
deleteall("//BODY/CENTER/comment()[contains(string(), 'Sina_News_Head_End')]/preceding-sibling::TABLE");
//delete banners between columns
//deleteall("//EMBED[contains(@src, 'ad4.sina')]/ancestor::TABLE[1]");
deleteall("//OBJECT[contains(@codebase, 'download.macromedia.com')]");
deleteall("//IFRAME[contains(@src, 'adsina')]/ancestor::TABLE[1]");
deleteall("//A[contains(@href, 'http://ad.cn')]");
//delete marqueen ad
deleteall("//IFRAME[contains(@src, 'iframe/ad/marqueen')]//parent::TD");
}else{
//clean up news item page
deleteall("//*[contains(@id, 'PublicRelation')]");
//delete right side bar
deleteme( getObject( document, "//DIV[@class='rightShell']//parent::TD"));
//delete top bar
deleteme( getObject( document, "//DIV[@class='top_bar']"));
deleteme( getObject( document, "//DIV[@class='fAD']"));
//deleteall("//IMG[contains(@src, 'sina_xwzx.GIF')]/ancestor::TABLE[2]");
//deleteme( getObject( document, "//CENTER/TABLE[1]"));
//deleteme( getObject( document, "//DIV[@id='outer']/TABLE[1]/TBODY/TR[1]/TD[3]"));
//delete iask bar
//deleteme( getObject( document, "//FORM[contains(@action, 'iask.com')][3]/ancestor::TABLE[1]"));
}
function deleteme( obj) {
try { obj.parentNode.removeChild( obj); }
catch( e) {GM_log("failed delete object");}
}
function deleteall(xpath) {
try {
var matches = document.evaluate(xpath, document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
var d = new Array();
for (i = 0; i <= matches.snapshotLength; i++ ) {
thisMatch = matches.snapshotItem(i);
thisMatch.style.display = 'none';
}
}
catch (e) {}
}
function getObject( obj, xpath) {
try { val = document.evaluate( xpath, obj, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue; }
catch( e) {}
if (!val) {GM_log("cannot find " + xpath); }
return val;
}
}
)();