Javascript代码突出显示新行和缩进

javascript code highlight with new lines and indentation

本文关键字:新行 缩进 显示 代码 Javascript      更新时间:2023-09-26

我正在写一个小单页应用程序(使用knockout.js:-)),其中我有一系列的javascript代码的例子。这段代码被封装在一个函数中,我在函数上调用toString以在浏览器中显示源代码。

总的来说一切都很好!但是由于示例的性质(作为学习练习),它们包含一些通常被认为是多余的代码。例如,下面的代码演示了javascript中的假y值:

var example = function() {
    if("" || 0 || null || undefined || NaN) {
     console.log("i'll never be logged");
    }
    else {
     console.log("i'll always be logged");
    }
};

在firefox中,如果我调用example.toString()返回的字符串不包含0, null"" -所以我的例子没有准确描绘!然而,在IE中,上述值包含在toString()调用的结果中,但字符串只是一行-没有缩进或任何东西!

所以我想知道的是

<罢工> 1。更可能的解决方案:有人知道ajs实现的代码高亮器,它将处理格式化/缩进为我,如果给一个长,单行字符串javascript代码。或者一个高光笔,允许简单的可扩展性来交付这种特性

  1. 不太可能的解决方案:如果有人知道如何在FF中获得准确的结果,或正确

任何帮助将不胜感激,这是真的令人沮丧,没有得到的结果,我想使应用程序完美:)

EDIT:似乎我是密集的,IE格式正确,它只是与我在构建应用程序时使用的基本示例一起,我将函数声明为单行,所以格式被准确地传递了!因此,在web历史上,IE完全符合您的期望,没有任何问题:)如果有人能提供一个原因,firefox从字符串表示

中删除某些部分的代码,那就太好了

首先,允许脚本引擎优化代码。如果编译器发现永远不会执行的分支,它可能会删除它们。

其次, Function.prototype。toString依赖于实现:

15.3.4.2 Function.prototype.toString ()

与实现相关的函数表示为返回。这种表示具有函数声明的语法。特别要注意留白的使用和位置,行终止符和分号在表示字符串是随具体.

如果您希望脚本内容的格式合理,请获取对script元素的引用,并使用其textContentinnerText(以所支持的为例)。

但是如果你想要正确格式化的代码,搜索"javascript pretty print"或者自己在HTML中做。