实现简易版markdown同步滚动
来源:互联网 发布:淘宝优惠卷群怎么拉人 编辑:程序博客网 时间:2024/05/29 08:53
通过引入markdown.js来实现文本的预览,这篇所写的是实现同步滚动
scroll.jsvar editor=document.getElementById('editor'); //输入框var preview=document.getElementById('preview'); //markdownvar hintbar=document.getElementById('hintbar'); //进度条function Editor(editor,preview){ //将输入框内容复制到markdown上 this.update=function(){ preview.innerHTML=markdown.toHTML(input.value); }; input.editor=this; this.update();}new Editor(editor,preview);function update(src,dest,hint){ //update将三部分UI耦合在一起 var scrollRange=src.scrollHeight-src.clientHeight, p=src.scrollTop/scrollRange; dest.scrollTop=p*(dest.scrollHeight-dest.clientHeight); hint.innerHTML=Math.round(100*p)+'%';}update(editor,preview,hintbar);function monopoly(fn,duration){ //获得允许调用该函数的权限,排斥其他函数的调用 duration=duration || 100; var ret=function(){ if(!monopoly.permit){ monopoly.permit=fn; } if(monopoly.permit === fn){ clearTimeout(monopoly.permitTimer); monopoly.permitTimer=setTimeout(function(){ delete monopoly.permit; },duration); return fn.apply(this,arguments); } } return ret;}editor.addEventListener('scroll',monopoly(function(evt){ //editor滑动 update(editor,preview,hintbar);}));preview.addEventListener('scroll',monopoly(function(evt){ //preview滑动 update(preview,editor,hintbar);}));
scroll.js中为输入部分和预览部分都定义scroll事件,但是双向的滚动会影响彼此,所以重点在于定义monopoly来排斥其他函数的调用。
<body> <textarea id="editor" rows="20" cols="30" oninput="this.editor.update()"></textarea> <div id="preview"></div> <p id="hintbar"></p> <script type="text/javascript" src="markdown.js"></script> <script type="text/javascript" src="scroll.js"></script></body>
0 0
- 实现简易版markdown同步滚动
- js实现简易模拟滚动条
- 两个RichTextBox同步滚动的实现
- C# TextBox 同步滚动 实现行号
- 两个div滚动条同步简单实现
- android实现两个listview的同步滚动
- android实现两个listview的同步滚动
- Android实现两个以上ScrollView同步滚动
- 两个div滚动条同步简单实现
- 实现HorizontalScrollView随ViewPager滚动的简易方法
- 实现简易版@功能
- 简易设置滚动广告
- Markdown 简易入门教程
- markdown简易教程
- Markdown简易语法识记
- Markdown文件简易指南
- Markdown简易教程
- Markdown入手简易教程
- 封装RecycleView的Adapter并实现列表展示
- Atcoder Regular Contest 072 E Alice in Linear Land
- 动态2
- 5-33 有理数加法 (15分)
- 让自己成为有利用价值的人
- 实现简易版markdown同步滚动
- UE4材质初探
- 关于jQuery对html中的元素进行选择的选择器问题
- PAT乙级(Basic Level)练习题 >外星人的语言
- 稀疏矩阵及其逆置矩阵
- Oracle表连接方法 (上)
- 1>LINK : fatal error LNK1123: 转换到 COFF 期间失败: 文件无效或损坏
- String,StringBuffer,StringBuilder之间的区别
- C_文件(1)关于fopen函数