右击收藏按钮一键收藏,左键单击仍为多文件夹。通过菜单设置一键收藏到哪些文件夹!
// ==UserScript== // @name 掘金一键收藏 // @namespace https://gist.github.com/KnIfER // @version 0.1 // @description 右击收藏按钮一键收藏,左键单击仍为多文件夹。通过菜单设置一键收藏到哪些文件夹! // @author You // @match *://juejin.cn/* // @icon https://www.google.com/s2/favicons?sz=64&domain=juejin.cn // @grant GM_registerMenuCommand // @grant GM_getValue // @grant GM_setValue // @grant GM_openInTab // ==/UserScript== (function() { 'use strict'; function gc(c, d) { return (d||document).getElementsByClassName(c)[0]; } function gcp(c, d) { var p = d||document; while(p) { if(p.classList && p.classList.contains(c)) return p; p = p.parentNode; } return p; } function gcs(c, d) { return (d||document).getElementsByClassName(c); } function stop(e) { e.preventDefault(); e.stopPropagation(); } function match(text, matcher, stEd) { matcher = matcher.split(';'); for(var i=0;i<matcher.length;i++){ var m = matcher[i].trim(), ln=m.length; if(ln>0) { if(ln==1) { if(m=='*') return 1; if(m=='^' && (stEd&1)) return 1; if(m=='v' && (stEd&2)) return 1; } if(text.includes(m)) return 1; } } } var matchers = '默认'; if(typeof GM_getValue != undefined) { matchers = GM_getValue('fav_folders', matchers); } GM_registerMenuCommand('选择收藏夹', function(){ var tmp = prompt("请输入收藏夹名称,用分号分隔。特殊:^匹配顶部,v匹配底部,*匹配全部", matchers); if(tmp && tmp.trim().length>0) { matchers = tmp; GM_setValue('fav_folders', matchers) } }); GM_registerMenuCommand('⭐ 查看收藏夹', function(){ gc('avatar-wrapper').click(); setTimeout(function(){ var ud = gc('user-detail').innerHTML; var idx = ud.indexOf('/user/'); var uid = ud.slice(idx+6, ud.indexOf('\"', idx)); console.log('uid', uid); GM_openInTab(`https://juejin.cn/user/${uid}/collections`, false); }, 350); }); document.addEventListener('contextmenu', (e)=>{ console.log(e.target); var tpc = 'panel-btn', tBtn = e.target, cc=5; while(tBtn && cc-->0) { if(tBtn.classList.contains(tpc)) break; tBtn = tBtn.parentNode; } if(tBtn.classList.contains(tpc)) { console.log('found', tBtn); if(gc('icon-collect', tBtn)) { console.log('检测到右击收藏按钮'); tBtn.click(); stop(e); setTimeout(function(){ var dlg = gc('modal-wrap'); var checks = gcs('checkbox-icon byte-checkbox__wrapper', dlg); console.log('检测到右击收藏按钮', gcp(checks[0])); var chosen = 0; for(var i=0,ln=checks.length;i<ln;i++){ var ck = checks[i]; var stEd=0; if(i==0) stEd|=1; if(i==ln-1) stEd|=2; if(match(gcp('list-item', ck).innerText, matchers, stEd)) { console.log('点击checkbox', ck); ck.click(); chosen = 1; } } if(!chosen) checks[0].click(); setTimeout(function(){ gc('confirm-btn', dlg).click(); }, 200); }, 500); } } }); // Your code here... })();