|
Author |
abababa
Posted at 2021-11-17 13:28:16
Last edited by abababa at 2021-11-17 13:41:00回复 66# 色k
我是这么想的,那个code其实就是想看源代码,那能不能就像latex代码那样,点一下代码然后出来一个框,里面是代码。然后我试着做了一下:- function close_tikz_window(){
- var tikz_window=document.getElementById('tikz_window');
- if(tikz_window){
- tikz_window.remove();
- }
- }
- function show_tikz_window(tikz_code){
- close_tikz_window();
- var tikz_window=document.createElement('div');
- tikz_window.id='tikz_window';
- tikz_window.style='position: fixed; z-index: 201; left: 317px; top: 228px; width: 500px;border:2px green solid;';
- tikz_window.innerHTML='<div><a href="javascript:;" class="float_close" onclick="close_tikz_window();">关闭</a></div><div><pre>'+decodeURI(tikz_code)+'</pre></div>';
- document.body.append(tikz_window);
- }
- function process_tikz(tikz_str) {
- // 原始的tikz代码
- var str = tikz_str.replace(/\[tikz\]|\[\/tikz\]|\n|\r/img, "");
- str=str.replace('<','<').replace('>','>');
- var tikz_str=encodeURI(str);
- //去掉换行的tikz代码
- var mystr=str.replace(/<br>/img,'');
- //编码
- mystr = encodeURI(mystr);
- //创建一个图片,点击图片时显示原始的tikz代码
- var s = '<img src="https://i.upmath.me/svg/'+mystr+'" onclick="show_tikz_window(\''+tikz_str+'\');" />';
- console.log(s);
- return s;
- }
- var posts=document.getElementsByClassName('postmessage');
- for(var i = 0; i < posts.length; i++){
- var post = posts[i];
- var html = post.innerHTML;
- html = html.replace(
- /\[tikz\]([\s\S]*?)\[\/tikz\]/igm,
- process_tikz
- );
- post.innerHTML = html;
- }
Copy the Code 点那个图片就能出来一个框,里面是源代码。改了一下,发现对应的有一个decodeURI函数,那先把它encodeURI,然后传到函数里,就变成能传的字符串了,然后显示的时候再decodeURI一下,就变回编码前的那样了。 |
|