您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
rfc add toc sidebar
当前为
- // ==UserScript==
- // @name rfc toc
- // @namespace http://yurenchen.com/
- // @version 0.3
- // @description rfc add toc sidebar
- // @author yurenchen
- // @match https://tools.ietf.org/html/*
- // @grant none
- // ==/UserScript==
- (function() {
- 'use strict';
- function appendScript(url,cb){
- var e=document.createElement('script');
- e.src=url;
- e.onload=cb;
- document.body.appendChild(e);
- }
- function appendCss(url){
- var e=document.createElement('link');
- e.rel="stylesheet";
- e.href=url;
- document.body.appendChild(e);
- }
- function appendTag(tag, prop){
- var e=document.createElement(tag);
- for(var k in prop){
- if(typeof(k)=="string" )//&& typeof(prop[k])=="string")
- e[k]=prop[k];
- console.log(k,prop[k]);
- }
- document.body.appendChild(e);
- return e;
- }
- //加载资源文件
- /*
- appendCss("http://note.yurenchen.com/usr/themes/chen/zTreeStyle.css");
- appendScript("http://note.yurenchen.com/usr/themes/chen/jquery-1.4.4.min.js");
- appendScript("http://note.yurenchen.com/usr/themes/chen/jquery.ztree.core-3.5.js");
- appendScript("http://note.yurenchen.com/usr/themes/chen/ztree_toc.js");
- */
- /*
- appendCss("https://raw.githubusercontent.com/yurenchen000/i5ting_ztree_toc/master/css/zTreeStyle/zTreeStyle.css");
- appendScript("https://raw.githubusercontent.com/yurenchen000/i5ting_ztree_toc/master/js/jquery-1.4.4.min.js");
- appendScript("https://raw.githubusercontent.com/yurenchen000/i5ting_ztree_toc/master/js/jquery.ztree.core-3.5.js");
- appendScript("https://raw.githubusercontent.com/yurenchen000/i5ting_ztree_toc/master/src/ztree_toc.js");
- */
- /*
- //cdn remove 'nosniff' and fix 'mime type' from https://raw.githack.com/
- appendScript("https://rawcdn.githack.com/yurenchen000/i5ting_ztree_toc/master/js/jquery-1.4.4.min.js", load_cb1);
- function load_cb1(){
- appendScript("https://rawcdn.githack.com/yurenchen000/i5ting_ztree_toc/master/js/jquery.ztree.core-3.5.js", load_cb2);
- }
- function load_cb2(){
- appendScript("https://rawcdn.githack.com/yurenchen000/i5ting_ztree_toc/master/src/ztree_toc.js", load_cb3);
- }
- function load_cb3(){
- init_toc();
- }
- appendCss("https://rawcdn.githack.com/yurenchen000/i5ting_ztree_toc/master/css/zTreeStyle/zTreeStyle.css");
- */
- /*
- var url_jq ='https://rawcdn.githack.com/yurenchen000/i5ting_ztree_toc/master/js/jquery-1.4.4.min.js';
- var url_ztree='https://rawcdn.githack.com/yurenchen000/i5ting_ztree_toc/master/js/jquery.ztree.core-3.5.js';
- var url_toc ='https://rawcdn.githack.com/yurenchen000/i5ting_ztree_toc/master/src/ztree_toc.js';
- var url_css ='https://rawcdn.githack.com/yurenchen000/i5ting_ztree_toc/master/css/zTreeStyle/zTreeStyle.css';
- */
- //var domain = 'https://rawcdn.githack.com';
- var domain = 'https://cdn.rawgit.com';
- var url_jq = domain+'/yurenchen000/i5ting_ztree_toc/master/js/jquery-1.4.4.min.js';
- var url_ztree= domain+'/yurenchen000/i5ting_ztree_toc/master/js/jquery.ztree.core-3.5.js';
- var url_toc = domain+'/yurenchen000/i5ting_ztree_toc/master/src/ztree_toc.js';
- var url_css = domain+'/yurenchen000/i5ting_ztree_toc/master/css/zTreeStyle/zTreeStyle.css';
- //cdn remove 'nosniff' and fix 'mime type' from https://raw.githack.com/
- appendScript(url_jq, load_cb1);
- function load_cb1(){
- appendScript(url_ztree, load_cb2);
- }
- function load_cb2(){
- appendScript(url_toc, load_cb3);
- }
- function load_cb3(){
- init_toc();
- }
- appendTag('div', {id:'tree',innerHTML:' TOC loading... ', style:'position: fixed; top:0px; right:0px; border:1px solid gray; height:100%;'});
- appendCss(url_css);
- appendTag('style',{innerHTML:'#tree a:hover { text-decoration: underline; color: green;} #tree a {text-decoration: none;} #tree a.curSelectedNode {color: red; text-decoration: underline;}',onload:window.style_load_ok});
- function style_load_ok(){
- console.log('style_load_ok ...');
- }
- //生成目录树
- function init_toc(){
- //生成目录树
- $('#tree').ztree_toc({
- _header_nodes:[{ id:1, pId:0, name:"Table of Content",open:true, url:'#legend', target: "_self" }],
- debug: false,
- is_auto_number: false,
- refresh_scroll_time: 10,
- scroll_selector: window,
- documment_selector:'div.content',
- ztreeStyle: {
- //width:'262px',
- overflow: 'auto',
- 'z-index': 10
- }
- });
- //滚动同步, 内容滚动时, TOC 当前章节 滚入视野
- window.onscroll=function(){
- //var top=document.body.scrollTop||window.scrollTop||window.scrollY||window.pageYoffset;
- if(typeof debug_offset != 'undefined')document.title=[top, $(window).scrollTop()];
- var o=$('#tree .curSelectedNode')[0];
- if(o)o.scrollIntoViewIfNeeded();
- //console.log('onscroll:'+[top, tree.style.position, $(window).scrollTop()]);
- };
- window.onscroll();
- }
- window.onload=function(){
- adjust_spacer_height();
- };
- window.onresize=function(){
- adjust_spacer_height();
- };
- function adjust_spacer_height(){
- var last=$(':header:last')[0];
- if(!last)return;
- var lack_len = document.body.clientHeight- (document.body.offsetHeight - last.offsetTop) + 10;
- spacer.style.height=lack_len+'px';
- }
- //阻止 TOC 滚动时 body 被滚动
- //http://stackoverflow.com/questions/5802467/prevent-scrolling-of-parent-element
- //http://stackoverflow.com/questions/4326845/how-can-i-determine-the-direction-of-a-jquery-scroll-event
- var lastScrollTop = 0;
- tree.onscroll=function(e){
- e.stopPropagation();
- e.preventDefault();
- e.cancelBubble= true;
- e.returnValue = false;
- var scrollTop = $(this).scrollTop();
- var pad=2;
- if (scrollTop > lastScrollTop){//down
- if(tree.scrollTop + tree.offsetHeight + 10 >= tree.scrollHeight)
- tree.scrollTop=tree.scrollHeight - tree.offsetHeight - pad;
- } else {//up
- if(tree.scrollTop <= 10)
- tree.scrollTop=pad;
- }
- lastScrollTop = scrollTop;
- return false;
- };
- })();