首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Prettify对网页中动态生成的摘录进行语法高亮显示

使用Prettify对网页中动态生成的摘录进行语法高亮显示
EN

Stack Overflow用户
提问于 2012-04-14 23:58:10
回答 1查看 1.5K关注 0票数 3

我有一个div,在这个div中,我从AJAX请求的结果动态加载一段代码。然后我想用prettify来格式化它。它起作用了,但它太慢了。我使用的代码如下:

代码语言:javascript
运行
复制
var jqxhr = $.get(fileName)
 .success(function(data) {
  $('#myDiv').html(data);
  prettyPrint();
  $('#myDiv').fadeIn();
})

简而言之,我做了GET请求,我把请求的结果放在#myDiv中,我格式化它,然后我fadeIn这个div。这需要一段时间,但负载很大。但是当我淡出div时,页面会保持几秒钟的无响应状态。我删除了prettyPrint(),页面运行得很好。有什么提示吗?

EN

回答 1

Stack Overflow用户

发布于 2012-04-15 02:04:40

我只是在猜测,但有几件事值得一提。

根据源代码,prettify.js的默认模式是使用continuations运行,为了避免一次占用CPU超过250ms (我引用的是http://code.google.com/p/google-code-prettify/source/browse/trunk/src/prettify.js的源代码):

代码语言:javascript
运行
复制
/**
 * Split {@code prettyPrint} into multiple timeouts so as not to interfere with
 * UI events.
 * If set to {@code false}, {@code prettyPrint()} is synchronous.
 */
window['PR_SHOULD_USE_CONTINUATION'] = true;

你在上面写代码的方式表明它可能被配置为以同步模式运行,这就是为什么它很慢并且占用了你的页面。您应该确保此标志未设置为false,并将fadeIn调用添加到传递给prettyPrint调用的回调函数中。

假设我没理解错的话,如果你设法在异步模式下运行prettyPrint,它应该最多占用250ms,并且通过将你对fadeIn的调用放在传递给prettyPrint调用的回调函数中,它不会淡出它,直到所有的语法突出显示都完成了。如果此时对prettyPrint (250ms)的一系列调用仍然感觉很慢,其他建议可能是将最大时间值减少到小于250的值,或者找出如何确保prettyPrint只对从ajax调用中更新的元素进行prettyPrints。

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

https://stackoverflow.com/questions/10155017

复制
相关文章

相似问题

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