您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
mark your toc floating! 默认取第一个table of contents,请知晓。
当前为
// ==UserScript== // @name Notion TOC Floating // @namespace https://github.com/gefangshuai/tampermokey-scripts // @version 0.1.1 // @description mark your toc floating! 默认取第一个table of contents,请知晓。 // @author Timothy.Ge // @include *://*.notion.so/* // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @note 21-05-25 0.1.1 解决了更换文章失效的问题 // @note 21-05-25 0.1.0 第一个测试版本 // ==/UserScript== (function() { (function(history) { 'use strict'; // Your code here... var doSomething = function() { var scroller = document.querySelector('div.notion-frame .notion-scroller'); var scrollWatchFun = function(e) { var tableContents = document.querySelector('.notion-table_of_contents-block'); if (tableContents) { var rect = tableContents.getBoundingClientRect(); var dom = tableContents.firstChild; if (dom) { if (rect.top <= 60) { dom.style.position = 'fixed'; dom.style.top = '60px'; } else { dom.style.position = null; dom.style.top = null; } } } }; if (scroller) { scroller.removeEventListener('scroll', scrollWatchFun); scroller.addEventListener('scroll', scrollWatchFun); } }; doSomething(); var pushState = history.pushState; history.pushState = function(state) { if (typeof history.onpushstate == 'function') { history.onpushstate({ state: state }); } setTimeout(function() { doSomething(); }, 1000); // ... whatever else you want to do // maybe call onhashchange e.handler return pushState.apply(history, arguments); }; })(window.history); })();