此脚本已过时,请访问这个替代

From: notsobad 最近在追着就看豆瓣的那些直播贴,很无聊。。。。

写了个greasemokey脚本,添加了个只看楼主功能。 代码在这里


/*********************************************************
用于douban小组中的"只看搂主",会把楼主的帖子加边框,同时,添加快捷键n,p “n”: 跳转到楼主下一个帖子,如果到了本页结尾,则跳回第一条 "p":
跳转到楼主下一个帖子,如果到了本页结尾,则跳回下一页
*********************************************************/


// ==UserScript==
// @name           douban
// @namespace      douban
// @description    test
// @include        *.douban.com/*
// ==/UserScript==
var log =  (unsafeWindow.console && console.log) || GM_log;
var $ = unsafeWindow.jQuery || function(){};

log("now url: " + location.href);

function xPath(aNode, aExpr) {
  var xpe = new XPathEvaluator();
  var nsResolver = xpe.createNSResolver(aNode.ownerDocument == null ?
    aNode.documentElement : aNode.ownerDocument.documentElement);
  var result = xpe.evaluate(aExpr, aNode, nsResolver, 0, null);
  var found = [];
  var res;
  while (res = result.iterateNext())
    found.push(res);
  return found;
}


(function(){
/**********************************************************
用于douban小组中的"只看搂主",会把楼主的帖子加边框,同时,添加快捷键n,p
“n”: 跳转到楼主下一个帖子,如果到了本页结尾,则跳回第一条
"p": 跳转到楼主下一个帖子,如果到了本页结尾,则跳回下一页
**********************************************************/
    if(location.href.indexOf("http://www.douban.com/group/topic") != 0) return;
    
    var temp = /&_lz_id=([^&\/\#]+)/.exec(location.href);
    if(temp){
        var lz_id = temp[1];
        var lz_url = "http://www.douban.com/people/"+ lz_id + "/";    
    }else{
        // First page
        var lz = xPath(document , '//div[@id="in_tablem"]//td[@class="wrtd"][1]/a')[0];
        var lz_id = lz.href.split('/people/')[1].replace('/','');
        var lz_url = lz.href;
    }
    log("lz is: " + lz_url);

    var all = xPath(document , '//div[@id="in_tablem"]/table[@class="wr"]//table[@class="wr"]');
    var pages = xPath(document , '//div[@id="in_tablem"]/div[@class="paginator"]//a');
    
    //为分页链接附加参数,_lz_id
    Array.forEach(pages, function(p){
        var sep = p.href.indexOf('?') != -1 ? '&' : '?';
        p.href += sep + '_lz_id=' + lz_id;
    });
    
    //高亮楼主, 添加锚点
    var lz_list = [];
    Array.forEach(all, function(table, index){
        user = table.getElementsByTagName('a')[0];
        //log("now user: " + user.href);
        if(user.href == lz_url){
            table.style.border="5px solid black";
            table.style.overflow = "scroll";
            lz_list.push(index);
            var a = document.createElement('a');
            a.name = index;
            table.parentNode.insertBefore(a, table);
        }
    });
    
    //快捷键
    var i = 0;
    document.addEventListener('keydown', function(e){
        if(e.target.tagName == 'INPUT' || e.target.tagName == 'TEXTAREA') return;
        
        var has_more = !!lz_list && i < lz_list.length && true;
        // 'n'=>78, 'p'=>80, 'j'=>74
        if(!has_more){
            if(e.keyCode == 80) location.href = pages[pages.length-1].href;
            else if(e.keyCode == 78) i=0;
            return;
        }
        if(e.keyCode == 78 || e.keyCode == 80){
            //log('Moving next....');
            location.href = '#' + lz_list[i];
            i++;
        }
        
    },false);
   
})();