← 工具箱
Markdown 编辑器
字数: 0
行数: 0
大小: 0 B
const html='Markdown导出'+$('pv').innerHTML+'';
const blob=new Blob([html],{type:'text/html'});
const a=document.createElement('a');a.href=URL.createObjectURL(blob);a.download='markdown.html';a.click();
toast('已导出');
}
// 语法参考
const REF=[
{title:'标题',code:'# H1 ## H2 ### H3',desc:'# 一级标题 ## 二级标题'},
{title:'粗体',code:'**文字**',desc:'**粗体文字**'},
{title:'斜体',code:'*文字*',desc:'*斜体文字*'},
{title:'删除线',code:'~~文字~~',desc:'~~删除的文字~~'},
{title:'无序列表',code:'- 项目',desc:'- 第一项\n- 第二项'},
{title:'有序列表',code:'1. 项目',desc:'1. 第一步\n2. 第二步'},
{title:'任务列表',code:'- [ ] 任务',desc:'- [x] 已完成\n- [ ] 未完成'},
{title:'引用',code:'> 文字',desc:'> 这是一段引用'},
{title:'行内代码',code:'`code`',desc:'使用 `print()` 函数'},
{title:'代码块',code:'```语言\n代码\n```',desc:'```python\nprint("hi")\n```'},
{title:'链接',code:'[文字](URL)',desc:'[点击访问](https://example.com)'},
{title:'图片',code:'',desc:''},
{title:'表格',code:'| 列 | 列 |',desc:'| A | B |\n|---|---|\n| 1 | 2 |'},
{title:'分割线',code:'---',desc:'---'},
{title:'公式',code:'$E=mc^2$',desc:'行内 $E=mc^2$ 或块 $$\\sum$$'},
];
function buildRef(){
$('refContent').innerHTML=REF.map(r=>{
return ''+r.title+'
'+esc(r.code)+''+esc(r.desc)+'
';
}).join('');
}
buildRef();
function toggleRef(){$('refPanel').classList.toggle('open')}
// Tab键
$('ed').addEventListener('keydown',e=>{
if(e.key==='Tab'){e.preventDefault();insertText(' ')}
});
// 同步滚动
let syncScroll=false;
$('ed').addEventListener('scroll',()=>{
if(syncScroll)return;syncScroll=true;
const el=$('ed'),pv=$('pv').parentElement;
const ratio=el.scrollTop/(el.scrollHeight-el.clientHeight||1);
pv.scrollTop=ratio*(pv.scrollHeight-pv.clientHeight);
setTimeout(()=>syncScroll=false,50);
});
function toast(m){const t=$('toast');t.textContent=m;t.classList.add('show');setTimeout(()=>t.classList.remove('show'),1200)}
render();