您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
2021/2/9下午2:06:26
当前为
// ==UserScript== // @name confluence PPT // @namespace Violentmonkey Scripts // @match https://confluence.zhenguanyu.com/display/** // @grant none // @version 1.0 // @author - // @description 2021/2/9下午2:06:26 // ==/UserScript== // document.addEventListener('DOMContentLoaded', () => { (() => { const htmlEscape = string => string .replace(/&/g, '&') .replace(/"/g, '"') .replace(/'/g, ''') .replace(/</g, '<') .replace(/>/g, '>'); function debounce(fn, delay) { // 定时器,用来 setTimeout var timer // 返回一个函数,这个函数会在一个时间区间结束后的 delay 毫秒时执行 fn 函数 return function () { // 保存函数调用时的上下文和参数,传递给 fn var context = this var args = arguments // 每次这个返回的函数被调用,就清除定时器,以保证不执行 fn clearTimeout(timer) // 当返回的函数被最后一次调用后(也就是用户停止了某个连续的操作), // 再过 delay 毫秒就执行 fn timer = setTimeout(function () { fn.apply(context, args) }, delay) } } const start = debounce(() => { const ops = document.querySelector('.ajs-menu-bar') const btn = document.createElement('li') btn.className = 'ajs-button normal' btn.innerHTML = '<span>PPT演示</span>' btn.title = 'PPT 演示' btn.onclick = () => { const slider = window.SliderDoc( { title: { selector: '#title-text', global: true, type: 'css' }, author: { selector: '.author', global: true, type: 'css' }, lvl0: '#main-content h1', lvl1: '#main-content h2', lvl2: '#main-content h3', lvl3: '#main-content h4', lvl4: '#main-content h5', lvl5: '#main-content h6', code: '#main-content pre', image: '#main-content figure, #main-content img', text: '#main-content table, #main-content p, #main-content > a, #main-content img, #main-content ul, #main-content ol, #main-content li' }, { excludes: [ ], parseElementTreeConfig: { transformNode: node => { return node } }, renderers: [ (vNode, ctx, render) => { if (vNode.type === 'lvl') { return `${ctx.renderSection( `<h${vNode.level + 1}>${htmlEscape(vNode.value)}</h${vNode.level + 1}>`, vNode, ctx )}${render(vNode.children)}` } return render() } ] } ); console.log(slider) } ops.prepend(btn) }, 100) ;(async () => { // console.log(window) // window.addEventListener('load', async () => { const loadScript = (src) => { const s = document.createElement('script') s.src = src s.async = 'async' s.defer = 'defer' document.head.appendChild(s) return new Promise(resolve => { s.onload = resolve }) } const loadStyle = (src) => { const s = document.createElement('link') s.rel = 'stylesheet' s.type = 'text/css' s.href = src document.head.appendChild(s) return new Promise(resolve => { s.onload = resolve }) } const addStyle = (css) => { const s = document.createElement('style') s.type = 'text/css' s.textContent = css document.head.appendChild(s) } await loadScript('https://unpkg.zhihu.com/slider-doc@1/dist/slider-doc.js') loadStyle('https://unpkg.zhihu.com/slider-doc@1/dist/style.css') // await loadScript('http://localhost:8080/slider-doc.js') // loadStyle('http://localhost:8080/style.css') loadStyle('https://unpkg.zhihu.com/reveal.js/dist/theme/solarized.css') loadStyle('https://unpkg.zhihu.com/highlight.js@10/styles/zenburn.css') if (typeof window.SliderDoc === 'function') { var _wr = function(type) { var orig = history[type]; return function() { var rv = orig.apply(this, arguments); var e = new Event('SliderDoc:' + type); e.arguments = arguments; window.dispatchEvent(e); return rv; }; }; history.pushState = _wr('pushState'), history.replaceState = _wr('replaceState'); // Use it like this: window.addEventListener('SliderDoc:replaceState', function(e) { }); window.addEventListener('SliderDoc:pushState', function(e) { console.log('start') start() }); addStyle( `.slider-doc-container section li p { display: inline; } .slider-doc-container section p * { vertical-align: top; } .slider-doc-container .ct-task-list .ct-task-li:before, .slider-doc-container .ct-task-list .ct-task-li-checked:before { height: 53px; left: -27px; } .slider-doc-container font[data-size] { zoom: 2.7; line-height: inherit!important; } .slider-doc-container .ct-mention-view { zoom: 2.4; // line-height: inherit!important; } .slider-doc-container .ct-status { zoom: 1.5; vertical-align: middle; } .slider-doc-container table * { font-size: 20px !important; zoom: 1 !important; } .slider-doc-container table p { text-shadow: none; font-weight: 500; color: #333; } .slider-doc-container table th p { font-size: 22px !important; font-weight: 700; color: #111; } ` ) start() } })() })() // })