Notion Fix

Fix bugs in Notion

当前为 2021-08-11 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name Notion Fix
  3. // @namespace https://github.com/alanleungcn/notion-fix
  4. // @version 1.0
  5. // @author Alan Leung
  6. // @description Fix bugs in Notion
  7. // @match https://www.notion.so/*
  8. // ==/UserScript==
  9.  
  10. (function () {
  11. 'use strict';
  12.  
  13. let preView = null;
  14. let curView = null;
  15. const checkInterval = 100;
  16. const viewList = [
  17. 'table',
  18. 'board',
  19. 'timeline',
  20. 'calendar',
  21. 'gallery',
  22. 'list',
  23. ];
  24.  
  25. const init = setInterval(() => {
  26. queryView();
  27. if (curView) {
  28. clearInterval(init);
  29. applyFix();
  30. }
  31. }, checkInterval);
  32.  
  33. window.addEventListener('click', () => {
  34. applyFix();
  35. });
  36.  
  37. function fixTimelineDividerPosition() {
  38. document.querySelector('.pseudoSelection').style.position = '';
  39. }
  40.  
  41. function fixScrollbarPosition() {
  42. document.querySelector(
  43. '.notion-scroller.vertical.horizontal'
  44. ).scrollLeft = 0;
  45. }
  46.  
  47. function queryView() {
  48. viewList.forEach((view, i) => {
  49. if (document.querySelector(`.notion-${view}-view`)) {
  50. curView = viewList[i];
  51. }
  52. });
  53. }
  54.  
  55. function applyFix() {
  56. requestAnimationFrame(() => {
  57. queryView();
  58. if (curView === 'timeline') {
  59. fixTimelineDividerPosition();
  60. }
  61. if (curView !== preView && preView === 'timeline') {
  62. fixScrollbarPosition();
  63. }
  64. preView = curView;
  65. });
  66. }
  67. })();