Skip to content

[bug] 使用showdown.js出bug了。排查一下是不是脚本管理问题 #203

Closed
@yang10560

Description

@yang10560

使用tampermonkey两结果都成功返回,而用scriptcat一条成功一条失败!

代码如下:

// ==UserScript==
// @name         测试md
// @namespace    http://tampermonkey.net/
// @version      1.0
// @description  测试md..
// @author       xx
// @match      *://*/*
// @run-at     document-end
// @require    https://cdn.staticfile.org/jquery/3.4.0/jquery.min.js
// @require    https://cdn.bootcdn.net/ajax/libs/marked/4.3.0/marked.min.js
// @require    https://cdn.bootcdn.net/ajax/libs/markdown-it/13.0.1/markdown-it.min.js
// @require    https://cdn.bootcdn.net/ajax/libs/showdown/2.1.0/showdown.min.js
// @require    https://cdn.bootcdn.net/ajax/libs/highlight.js/11.7.0/highlight.min.js
// @license    MIT


// ==/UserScript==

(function(){


    //失败
    const text = `当然!以下是一些常见的KaTeX公式的示例:

1. 行内公式:$E=mc^2$,表示质能方程。

2. 上标和下标:$x^n$,$x_{i,j}$。

3. 分式:$\\frac{a}{b}$,表示a除以b。

4. 根号:$\\sqrt{x}$,表示x的平方根。

5. 求和符号:$\\sum_{i=1}^{n} x_i$,表示求x1到xn的和。

6. 积分符号:$\\int_{a}^{b} f(x) dx$,表示对f(x)从a到b的积分。

7. 极限符号:$\\lim_{x \\to \\infty} f(x)$,表示当x趋向于无穷大时f(x)的极限。

8. 矩阵:$\\begin{pmatrix} a & b \\\\ c & d \\end{pmatrix}$,表示一个2x2的矩阵。

9. 矢量:$\\vec{v}$,表示向量v。

10. 微分符号:$\\frac{d}{dx}$,表示对x求导。

这只是一小部分KaTeX公式的示例,你可以根据需要在KaTeX文档或网上找到更多的公式和用法。`

    const text2 = '你好' //成功

    function mdConverter(rawData) {
        let converter = new showdown.Converter(); //增加拓展table
        converter.setOption('tables',
            true); //启用表格选项。从showdown 1.2.0版开始,表支持已作为可选功能移入核心拓展,showdown.table.min.js扩展已被弃用
        converter.setOption('openLinksInNewWindow',true) //链接在新窗口打开
        converter.setOption('strikethrough', true) //删除线
        converter.setOption('emoji', true) //开启emoji

        /***
         * original: John Gruber 规范中的原始 Markdown 风格
         * vanilla:对决基础风味(v1.3.1 起)
         * github: GitHub 风格的 Markdown,或 GFM
         */
        showdown.setFlavor('github');

        return converter.makeHtml(rawData);
    }

    setTimeout(()=>{
        console.log(mdConverter(text))//失败
    },1000)

    setTimeout(()=>{
        console.log(mdConverter(text2))//成功
    },1000)


})();

结果如下:

测试md.user.js:18 Uncaught TypeError: Cannot read properties of undefined (reading 'codeblock')
    at 测试md.user.js:18:60269
    at 测试md.user.js:18:42248
    at x.Converter.makeHtml (测试md.user.js:18:36809)
    at mdConverter (测试md.user.js:1285:26)
    at 测试md.user.js:1289:21
(anonymous) @ 测试md.user.js:18
(anonymous) @ 测试md.user.js:18
makeHtml @ 测试md.user.js:18
mdConverter @ 测试md.user.js:1285
(anonymous) @ 测试md.user.js:1289
setTimeout (async)
(anonymous) @ 测试md.user.js:1288
(anonymous) @ 测试md.user.js:1297
window.NzWaSySfKyaZCXaA @ 测试md.user.js:1304
value @ VM395:3
value @ VM395:3
set @ VM395:3
(anonymous) @ 测试md.user.js:1
(anonymous) @ VM403:6
(anonymous) @ VM403:8

测试md.user.js:1293 
<p>你好</p>

正确结果应该是

<p>当然!以下是一些常见的KaTeX公式的示例:</p>
<ol>
<li><p>行内公式:$E=mc^2$,表示质能方程。</p></li>
<li><p>上标和下标:$x^n$,$x_{i,j}$。</p></li>
<li><p>分式:$\frac{a}{b}$,表示a除以b。</p></li>
<li><p>根号:$\sqrt{x}$,表示x的平方根。</p></li>
<li><p>求和符号:$\sum<em>{i=1}^{n} x</em>i$,表示求x1到xn的和。</p></li>
<li><p>积分符号:$\int_{a}^{b} f(x) dx$,表示对f(x)从a到b的积分。</p></li>
<li><p>极限符号:$\lim_{x \to \infty} f(x)$,表示当x趋向于无穷大时f(x)的极限。</p></li>
<li><p>矩阵:$\begin{pmatrix} a &amp; b \ c &amp; d \end{pmatrix}$,表示一个2x2的矩阵。</p></li>
<li><p>矢量:$\vec{v}$,表示向量v。</p></li>
<li><p>微分符号:$\frac{d}{dx}$,表示对x求导。</p></li>
</ol>
<p>这只是一小部分KaTeX公式的示例,你可以根据需要在KaTeX文档或网上找到更多的公式和用法。</p>

<p>你好</p>

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions