首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自动SyntaxHighlighter与美化

自动SyntaxHighlighter与美化
EN

Stack Overflow用户
提问于 2016-05-21 15:46:29
回答 1查看 123关注 0票数 2

致力于一个学校项目,我们已经创建了一个论坛为基础的网站。我们使用PageDown美化来处理文本。

但是,就像现在一样,我们必须在代码中使用<!--?prettify?-->,才能顺利地完成它,但是有什么方法可以告诉这个程序如何处理来自PageDown自动版的所有<pre>标记呢?

自动SyntaxHighlighter有什么缺点吗?

1#可能的解决方案,但不是我所想到的:

您可以将$("pre").addClass("prettyprint");添加到javascript。这段代码将为每个预标记提供prettyprint类,但是这个简短的代码在Markdown预览中不能工作,所以对我来说,这只是一个50%的解决方案。

在预览上使用2#可能的解决方案,但不对用户友好:

我发现您可以调用一个函数prettyPrint();来突出显示带有class="prettyprint"的所有<pre>标记。因此,如果我们将解决方案与此结合起来,并添加一个setInterval()(或其他类似于.click的东西)来进行调用,我们将得到一些与Markdown预览一起工作的内容。我认为这种方式对用户不友好,因为它使用了大量的计算机功能(我认为),如果你仔细观察,有时会在<pre>标签中看到一点闪烁。

这是代码:

代码语言:javascript
复制
var timer = setInterval(prettytimer, 0);

function prettytimer() {
    $("pre").addClass("prettyprint");
    prettyPrint();
};

如果有人想知道为什么没有.removeClass()hasClass()检查,那是因为.addClass()没有两次添加同一个类。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-25 18:14:02

我所追求的3#解决方案:

这是我在预览处理程序站点和网页其余部分的解决方案1#中寻找的解决方案。也许有一些更好的方法,但这种方式会给你堆叠溢出的感觉。

代码语言:javascript
复制
var timer;

//If the code button have been pressed {}
$("#wmd-code-button").click(function () {
    clearTimeout(timer);
    timer = setTimeout(prettytimer, 3000);
});

//when on key have been released inside textarea
$(".wmd-input").on("keyup", function () {
    clearTimeout(timer);
    timer = setTimeout(prettytimer, 3000);
});

//If `timer` reach 3000 (3 seconds) execute this
function prettytimer() {
    $("pre").addClass("prettyprint");
    prettyPrint();
};

如果您正在使用pageDown Markdown,那么您不必对此代码进行任何更改,只需将其复制到您的javascript文件中:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37364993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档