Skip to content

Instantly share code, notes, and snippets.

@edvakf
Created March 18, 2009 16:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save edvakf/81238 to your computer and use it in GitHub Desktop.
Save edvakf/81238 to your computer and use it in GitHub Desktop.
// ==UserScript==
// @name ad_entry_blocker_mod.user.js
// @namespace http://d.hatena.ne.jp/edvakf/
// @description Remove ad items
// @include http://reader.livedoor.com/reader/
// @include http://reader.livedoor.com/public/*
// @include http://fastladder.com/reader/
// ==/UserScript==
// Inspired by the original script http://blog.endflow.net/?p=58
(function(){
/////////////// configurations ////////////////
var cfg = {
// judgement patterns of entry title
patterns: [/^[\s【]*(AD|PR|AD|PR)[\s】]*[::]/i],
// advertisement entries style (apply this style to title link <a>)
style: ['color:#aaa;','font-size:12px;'],
// skip ad-entry
skip: true
}
///////////////////////////////////////////////
var w = (typeof unsafeWindow == 'undefined') ? window : unsafeWindow;
w.blockItem = function(self){
w.addClass(self.parentNode.parentNode.parentNode.parentNode.parentNode,'blocked');
};
w.LDR_addStyle('.item.blocked h2 > a',cfg.style);
// for non-IE
//w.LDR_addStyle('.item.blocked > .padding > :not(.item_header)',['display:none;']);
// IE OK
w.LDR_addStyle('.item.blocked .item_info, .item.blocked .item_body, .item.blocked .item_footer',['display:none;']);
w.entry_widgets.add('ad_entry_block', function(feed, item){
if(cfg.patterns.some(function(re){return re.test(item.title)})){
return '<img alt="" style="height:0;border:none;" src="data:hoge" onerror="blockItem(this)" />';
}else{
return '';
}
}, 'LDR Ad-Entry Blocker');
if(cfg.skip){
//method 1
/*
var j_func = Keybind._keyfunc['j'];
Keybind.add('j|enter', function(){
w.opera.postError('j_func : '+prev_ad);
j_func();
var info = get_active_item(true);
hasClass(info.element.parentNode.parentNode.parentNode, 'blocked')
&& ( (Control.next_item_offset()==null) ? j_func() : arguments.callee() );
});
var k_func = Keybind._keyfunc['k'];
Keybind.add('k|shift+enter', function(){
w.opera.postError('k_func : '+prev_ad);
k_func();
var info = get_active_item(true);
hasClass(info.element.parentNode.parentNode.parentNode, 'blocked')
&& ( (Control.prev_item_offset()==null) ? k_func() : arguments.callee() );
});
*/
//method 4
var j_func = Keybind._keyfunc['j'];
Keybind.add('j|enter', function(){
j_func()
if(Control.next_item_offset()==null) return;
var info = get_active_item(true);
hasClass(info.element.parentNode.parentNode.parentNode, 'blocked') && arguments.callee() ;
});
var k_func = Keybind._keyfunc['k'];
Keybind.add('k|shift+enter', function(){
k_func();
if(Control.prev_item_offset()==null) return k_func();
var info = get_active_item(true);
hasClass(info.element.parentNode.parentNode.parentNode, 'blocked') && arguments.callee() ;
});
//method 2
/*
var prev_ad = null;
var j_func = Keybind._keyfunc['j'];
Keybind.add('j|enter', function(){
w.opera.postError('j_func : '+prev_ad);
j_func();
var info = get_active_item(true);
hasClass(info.element.parentNode.parentNode.parentNode, 'blocked')
&& ( (info.item_id==prev_ad) ? j_func()
: ((prev_ad = info.item_id) && arguments.callee()) );
});
var k_func = Keybind._keyfunc['k'];
Keybind.add('k|shift+enter', function(){
w.opera.postError('k_func : '+prev_ad);
k_func();
var info = get_active_item(true);
hasClass(info.element.parentNode.parentNode.parentNode, 'blocked')
&& ( (info.item_id==prev_ad) ? k_func()
: ((prev_ad = info.item_id) && arguments.callee()) );
});
*/
//method 3
/*
var prevId = null;
var j_func = Keybind._keyfunc['j'];
Keybind.add('j|enter', function(){
w.opera.postError('j_func : '+prevId);
j_func();
var info = get_active_item(true);
if(prevId == info.item_id)return;
prevId = info.item_id;
hasClass(info.element.parentNode.parentNode.parentNode, 'blocked') && arguments.callee();
});
var k_func = Keybind._keyfunc['k'];
Keybind.add('k|shift+enter', function(){
w.opera.postError('k_func : '+prevId);
k_func();
var info = get_active_item(true);
if(prevId == info.item_id)return;
prevId = info.item_id
hasClass(info.element.parentNode.parentNode.parentNode, 'blocked') && arguments.callee();
});
*/
}
})();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment