为豆瓣增加悬停式二级导航
// ==UserScript== // @name Sliding Navbar for douban // @name:zh-CN 豆瓣悬停式导航栏 // @namespace caomu.douban.sliding.navbar // @version 0.4 // @description Add Sliding Sub-Navbar for douban.com // @description:zh-CN 为豆瓣增加悬停式二级导航 // @author footroot <caomu> // @include https://*.douban.com/* // @include http://*.douban.com/* // @require https://cdn.bootcss.com/jquery/1.8.3/jquery.min.js // @grant GM_addStyle // ==/UserScript== var cssStr = '.bn-sp a[data-moreurl-dict]{color:#d5d5d5 !important}' +'.bn-sp a[data-moreurl-dict]:hover{color:#fff !important}' +'.subnav{position: absolute !important;left: -999em !important;display: block !important;z-index:90 !important;padding: 10px 0; border: 1px solid #e6e6e6; background: #fff; white-space: nowrap; top: 28px;}' +'.subnav{} .bn-sp:hover .subnav {left: auto !important;display: block !important}' +'.subnav a {color: #3d3d3d !important;display: block !important;padding: 0 20px !important;line-height: 28px !important;}' +'.subnav a:hover {background-color: #f6f6f6 !important;}' GM_addStyle(cssStr) var _uid = $('.global-nav-items ul li a').data('moreurl-dict').uid; var _mine = (_uid === "0") ? "mine" : "people/" + _uid; $('.top-nav-doubanapp').hide(); var _navList = { 'main': [ {'name':'浏览发现', 'link':'explore'}, {'name':'发现条目', 'link':'subject/explore'}, {'name':'移动应用', 'link':'app'}, {'name':'游戏', 'link':'game'}, {'name':'线上活动', 'link':'online'}, {'name':'我的主页', 'link':'mine'}, {'name':'广播', 'link':'mine/statuses'}, {'name':'相册', 'link':'mine/photos'}, {'name':'日记', 'link':'mine/notes'}, {'name':'喜欢', 'link':_mine + '/likes'}, {'name':'豆列', 'link':'mine/doulists'}, {'name':'地方', 'link':'trip/mine'} ], 'book': [ {'name':'我读', 'link':'mine'}, {'name':'书评', 'link':_mine + '/reviews'}, {'name':'笔记', 'link':_mine + '/annotation'}, {'name':'豆列', 'link':_mine + '/doulists'}, {'name':'动态', 'link':'updates'}, {'name':'豆瓣猜', 'link':'recommended'}, {'name':'分类浏览', 'link':'tag'}, {'name':'购书单', 'link':'cart'}, {'name':'排行榜', 'link':'chart'}, {'name':'书评专区', 'link':'review/best'} ], 'movie':[ {'name':'我看', 'link':'mine'}, {'name':'影评', 'link':_mine + '/reviews'}, {'name':'问答', 'link':_mine + '/question'}, {'name':'豆列', 'link':_mine + '/doulists'}, {'name':'影讯', 'link':'nowplaying'}, {'name':'选电影', 'link':'explore'}, {'name':'电视剧', 'link':'tv'}, {'name':'排行榜', 'link':'chart'}, {'name':'豆瓣猜', 'link':'recommended'}, {'name':'分类', 'link':'tag'}, {'name':'热门影评', 'link':'review/best'} ], 'music':[ {'name':'我听', 'link':'mine'}, {'name':'音乐动态', 'link':_mine + '/update'}, {'name':'乐评', 'link':_mine + '/reviews'}, {'name':'我的歌单', 'link':_mine + '/programme'}, {'name':'豆列', 'link':_mine + '/doulists'}, {'name':'音乐人', 'link':'artists'}, {'name':'专题', 'link':'topics'}, {'name':'排行榜', 'link':'chart'}, {'name':'豆瓣猜', 'link':'recommended'}, {'name':'分类浏览', 'link':'tag'}, {'name':'最新乐评', 'link':'review/latest'}, {'name':'歌单', 'link':'programmes'} ], 'location':[ {'name':'我的同城', 'link':'mine'}, {'name':'近期活动', 'link':'evets'}, {'name':'舞台剧', 'link':'drama'}, {'name':'剧评', 'link':'drama/review/best'} ], 'group':[ {'name':'我的小组', 'link':'mine'}, {'name':'加入', 'link':_mine + '/joins'}, {'name':'发起', 'link':_mine + '/publish'}, {'name':'回应', 'link':_mine + '/reply'}, {'name':'喜欢', 'link':_mine + '/likes'}, {'name':'推荐', 'link':_mine + '/recommendations'}, {'name':'话题精选', 'link':'explore'} ], 'read':[ {'name':'我的订阅', 'link':'subscriptions'}, {'name':'最近阅读', 'link':'reader'}, {'name':'购物车', 'link':'account/wishlist'} ], 'fm':[ {'name':'兆赫', 'link':'explore/channels'}, {'name':'歌单', 'link':'explore/songlists'}, {'name':'我的FM', 'link':'mine'} ], 'commodity':[ {'name':'我的东西', 'link':_mine}, {'name':'豆列', 'link':'doulists'}, {'name':'海淘', 'link':'haitao'}, {'name':'图文', 'link':'articles'} ], 'market':[ {'name':'个人中心', 'link':'people'}, {'name':'购物车', 'link':'cart'} ] }; function init(){ var aInLi = $('.global-nav-items ul li').children('a[data-moreurl-dict]'); aInLi.parent().addClass('bn-sp'); aInLi.each(function(){ var _t = $(this), _dict = _t.data('moreurl-dict'); if(_dict){ var _from = _dict.from; var _navClass = _from.replace('top-nav-click-',''); newSubNav(_t, _navClass); } }) } function newSubNav(that, navClass){ var _t = that, _nc = navClass, _nl = _navList[_nc], _loc = _t.prop('origin') + _t.prop('pathname'); _loc = _loc.replace(/\/$/,'') + '/'; var _targetOn = _t.parent().hasClass('on'), _target = _targetOn ? '' : '_blank' if (_nl){ _t.after($('<div class="more-items subnav nav-' + _nc + '">')); $('.nav-' + _nc).append($('<table>')); for (var i in _nl) { var _str = '<tr><td><a href="' + _loc + _nl[i].link + '" target="'+_target+'">' + _nl[i].name + '</a></td></tr>' _t.next().children('table').append($(_str)) } } } var _nav = $('#db-global-nav'); if(_nav.length > 0){ init(); }