您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Make NotebookLM dialog fullscreen with proper content scaling
- // ==UserScript==
- // @name NotebookLM Fullscreen
- // @namespace http://tampermonkey.net/
- // @version 0.9
- // @description Make NotebookLM dialog fullscreen with proper content scaling
- // @author hulu
- // @match https://notebooklm.google.com/*
- // @grant GM_addStyle
- // @run-at document-start
- // @license MIT
- // ==/UserScript==
- (function() {
- 'use strict';
- const debug = {
- log: (...args) => console.log('[NotebookLM Debug]', ...args)
- };
- // 使用 MutationObserver 替代 DOMNodeInserted
- const observer = new MutationObserver((mutations) => {
- const dialog = document.querySelector('.mat-mdc-dialog-container');
- const container = document.querySelector('.cdk-overlay-container');
- if(container) {
- if(dialog && dialog.querySelector('.note-editor')) {
- container.style.backgroundColor = 'rgba(0, 0, 0, 0.8)';
- } else {
- container.style.backgroundColor = 'transparent';
- }
- }
- });
- // 启动观察器
- const observerConfig = {
- childList: true,
- subtree: true,
- attributes: true,
- characterData: true
- };
- if (document.body) {
- observer.observe(document.body, observerConfig);
- } else {
- window.addEventListener('DOMContentLoaded', () => {
- observer.observe(document.body, observerConfig);
- }, { passive: true });
- }
- // 注入样式
- GM_addStyle(`
- /* 弹出框容器 */
- .cdk-overlay-container {
- width: 100vw !important;
- height: 100vh !important;
- position: fixed !important;
- top: 0 !important;
- left: 0 !important;
- z-index: 9999 !important;
- display: flex !important;
- justify-content: center !important;
- align-items: center !important;
- }
- /* 弹出框包装器 */
- .cdk-global-overlay-wrapper {
- width: 100vw !important;
- height: 100vh !important;
- position: fixed !important;
- top: 0 !important;
- left: 0 !important;
- margin: 0 !important;
- padding: 0 !important;
- }
- /* 笔记编辑器对话框样式 */
- .note-editor .mat-mdc-dialog-container,
- .note-editor .mat-mdc-dialog-content,
- .note-editor {
- width: 100vw !important;
- height: 100vh !important;
- max-width: none !important;
- max-height: none !important;
- margin: 0 !important;
- padding: 0 !important;
- position: fixed !important;
- top: 0 !important;
- left: 0 !important;
- transform: none !important;
- box-sizing: border-box !important;
- }
- /* 编辑器内容 */
- .ql-editor,
- .prosemirror-editor,
- .markdown-editor-legacy {
- height: calc(100vh - 64px) !important;
- width: 100% !important;
- padding: 20px 40px !important;
- box-sizing: border-box !important;
- overflow-y: auto !important;
- background-color: var(--v2-surface) !important;
- }
- /* 移除所有遮罩 */
- .cdk-overlay-backdrop,
- .cdk-overlay-dark-backdrop,
- .cdk-overlay-backdrop-showing,
- .cdk-overlay-connected-position-bounding-box {
- display: none !important;
- opacity: 0 !important;
- visibility: hidden !important;
- pointer-events: none !important;
- }
- /* 修复主内容区域 */
- .main-contents {
- pointer-events: auto !important;
- background: transparent !important;
- }
- /* 修复按钮样式 */
- .note-header__controls {
- position: fixed !important;
- top: 12px !important;
- right: 12px !important;
- z-index: 2 !important;
- display: flex !important;
- gap: 8px !important;
- }
- /* 修复按钮点击事件 */
- .note-editor-close-button,
- .mat-mdc-button,
- .mat-icon,
- .mat-mdc-button-touch-target,
- .mat-mdc-menu-content,
- .mat-mdc-menu-panel {
- pointer-events: auto !important;
- cursor: pointer !important;
- position: relative !important;
- z-index: 1 !important;
- }
- /* 优化按钮焦点指示器 */
- .mat-focus-indicator {
- position: relative !important;
- display: inline-flex !important;
- align-items: center !important;
- justify-content: center !important;
- min-width: fit-content !important;
- max-width: 100% !important;
- box-sizing: border-box !important;
- padding: 0 8px !important;
- height: 36px !important;
- }
- /* 按钮内部文字自适应 */
- .mat-focus-indicator .mdc-button__label {
- display: inline-flex !important;
- align-items: center !important;
- white-space: nowrap !important;
- overflow: hidden !important;
- text-overflow: ellipsis !important;
- flex: 0 1 auto !important;
- min-width: 0 !important;
- height: 100% !important;
- }
- /* 保持按钮图标大小固定 */
- .mat-focus-indicator .mat-icon {
- flex: 0 0 auto !important;
- width: 24px !important;
- height: 24px !important;
- font-size: 24px !important;
- line-height: 24px !important;
- margin: 0 4px !important;
- display: flex !important;
- align-items: center !important;
- justify-content: center !important;
- }
- /* 确保按钮边界不被内容撑开 */
- .mat-focus-indicator.mat-mdc-button {
- max-width: 300px !important;
- height: 36px !important;
- display: inline-flex !important;
- align-items: center !important;
- justify-content: center !important;
- border-radius: 18px !important;
- overflow: hidden !important;
- }
- .note-editor-close-button {
- <!-- display: flex !important; -->
- align-items: center !important;
- justify-content: center !important;
- width: 40px !important;
- height: 40px !important;
- border-radius: 50% !important;
- background: rgba(255, 255, 255, 0.1) !important;
- border: none !important;
- color: var(--v2-on-surface-emphasis) !important;
- }
- .note-editor-close-button:hover {
- background: rgba(255, 255, 255, 0.2) !important;
- }
- /* 移除所有过渡动画 */
- .cdk-overlay-container *,
- .mat-mdc-dialog-container *,
- .cdk-global-overlay-wrapper *,
- .cdk-overlay-pane * {
- transition: none !important;
- animation: none !important;
- }
- /* 修复分享对话框样式 */
- .sharing-dialog {
- position: relative !important;
- width: 500px !important;
- max-width: 90vw !important;
- height: auto !important;
- background: var(--v2-surface) !important;
- border-radius: 28px !important;
- box-shadow: 0 8px 16px rgba(0, 0, 0, 0.14) !important;
- z-index: 10000 !important;
- }
- .sharing-dialog .mat-mdc-dialog-container {
- position: static !important;
- width: 100% !important;
- height: auto !important;
- max-height: 90vh !important;
- transform: none !important;
- margin: 0 !important;
- padding: 24px !important;
- background: transparent !important;
- }
- /* 分享对话框的遮罩 */
- .sharing-dialog ~ .cdk-overlay-backdrop {
- display: block !important;
- opacity: 1 !important;
- visibility: visible !important;
- pointer-events: auto !important;
- background: rgba(0, 0, 0, 0.32) !important;
- position: fixed !important;
- top: 0 !important;
- left: 0 !important;
- right: 0 !important;
- bottom: 0 !important;
- z-index: 9999 !important;
- }
- /* 修复分享对话框内部布局 */
- .sharing-dialog .mat-mdc-dialog-surface {
- display: block !important;
- position: relative !important;
- box-sizing: border-box !important;
- }
- /* 确保分享对话框在正确的位置 */
- .sharing-dialog .cdk-overlay-pane {
- position: fixed !important;
- top: 50% !important;
- left: 50% !important;
- transform: translate(-50%, -50%) !important;
- }
- /* 修复标题层级 */
- .mat-card-title,
- [class*="note-title"],
- [class*="ngcontent"] {
- position: relative !important;
- z-index: 1 !important;
- }
- /* 修复编辑器背景 */
- .note-editor {
- background-color: var(--v2-surface) !important;
- }
- /* 确保菜单显示在按钮上层 */
- .cdk-overlay-container {
- position: fixed !important;
- z-index: 1000 !important;
- pointer-events: none !important;
- }
- .cdk-overlay-pane {
- pointer-events: auto !important;
- position: absolute !important;
- }
- /* 修复菜单项点击事件 */
- .mat-mdc-menu-item {
- pointer-events: auto !important;
- cursor: pointer !important;
- position: relative !important;
- z-index: 2 !important;
- }
- /* 修复设置图标显示 */
- .settings-icon.mat-icon {
- position: relative !important;
- z-index: 100 !important;
- display: inline-flex !important;
- align-items: center !important;
- justify-content: center !important;
- }
- /* 修复分享标签自适应 */
- .share-label.ng-star-inserted {
- max-width: 200px !important;
- white-space: nowrap !important;
- overflow: hidden !important;
- text-overflow: ellipsis !important;
- display: inline-block !important;
- }
- /* 确保分享按钮容器正确显示 */
- .settings-button {
- display: flex !important;
- align-items: center !important;
- gap: 8px !important;
- padding: 0 16px !important;
- height: 36px !important;
- border-radius: 18px !important;
- background: var(--v2-settings-button-background) !important;
- }
- /* 确保图标和文字垂直居中 */
- .settings-button .mat-icon,
- .settings-button .settings-label {
- display: inline-flex !important;
- align-items: center !important;
- vertical-align: middle !important;
- }
- .mat-icon {
- -webkit-user-select: none;
- user-select: none;
- background-repeat: no-repeat;
- display: inline-block;
- fill: currentColor;
- height: 24px;
- width: 24px;
- overflow: visible !important;
- position: relative !important;
- z-index: auto !important;
- }
- :where(:root) .gmat-mdc-button.mat-mdc-extended-fab {
- padding-left: 24px;
- padding-right: 24px;
- line-height: 36px !important;
- height: 36px !important;
- display: inline-flex !important;
- align-items: center !important;
- justify-content: center !important;
- }
- /* 确保 extended-fab 按钮内容对齐 */
- :where(:root) .gmat-mdc-button.mat-mdc-extended-fab .mdc-button__label {
- display: inline-flex !important;
- align-items: center !important;
- height: 100% !important;
- line-height: normal !important;
- }
- `);
- debug.log('脚本加载完成');
- })();