【问题标题】:Using ColdFusion variable with line breaks in JavaScript在 JavaScript 中使用带有换行符的 ColdFusion 变量
【发布时间】:2015-07-22 21:22:15
【问题描述】:

我有一个接受换行符的文本区域。该文本区域的内容保存在一个coldfusion变量中(我们称之为#fieldVal#)。所以,我的变量内容看起来像

textline 1
textline 2

稍后,我在 JavaScript 中使用该变量

document.all.fieldName.value = "#fieldVal#";

但是,当 JavaScript 访问页面时,它看起来像这样:

document.all.fieldName.value = "textline 1
textline 2";

脚本中断是因为第一行没有以分号结尾。

我尝试为 ColdFusion 文本设置一个 JavaScript 变量,然后执行 replace(),但我仍然遇到了同样的问题,该行没有正确结束。

我认为我遗漏了一些明显的东西,但我只是没有看到它。有人能告诉我我在这里缺少什么吗?

【问题讨论】:

  • 它提到的具体错误是什么?
  • SCRIPT1015:未终止的字符串常量
  • 你尝试过 或 toScript() 吗?

标签: javascript coldfusion


【解决方案1】:

使用 JSStringFormat() 函数。它旨在转义 JavaScript 中的元字符

转义特殊的 JavaScript 字符,例如单引号, 双引号和换行符。

https://wikidocs.adobe.com/wiki/display/coldfusionen/JSStringFormat

document.all.fieldName.value = "#JSStringFormat( fieldVal )#";

如果您使用的是 ColdFusion 10+ 或 Lucee Server,请使用 EncodeForJavaScript()

https://wikidocs.adobe.com/wiki/display/coldfusionen/EncodeForJavaScript

【讨论】:

    【解决方案2】:

    选项 1

    document.all.fieldName.value = "#Replace(trim(fieldVal), chr(10) & chr(13), ' ', 'ALL')#"; 
    

    选项2(也有可能出现同样的问题。)

    尝试使用ToScript()

    ToScript(fieldVal, valueVar)
    

    Toscript 用 Coldfusion 变量值初始化一个变量,你可以像使用任何 JS 全局变量一样使用它。

    document.all.fieldName.value = valueVar;
    

    选项 3(如果您需要 HTML 格式)

    使用 Coldfusion 函数 ParagraphFormat() 将换行符更改为 <br/>

    【讨论】:

    • 选项 1 和 3 不处理字符串中可能存在的其他特殊字符。
    • @BradWood 是的,确实如此,我会努力改进它。 :)
    【解决方案3】:

    我偶然发现了一个有效的代码 sn-p。它有点……令人费解,但它确实有效。

    document.all.fieldName.value = "#Replace(Replace(URLDecode(Replace(Replace(URLEncodedFormat(fieldVal), "%0D", " ", "ALL"), "%0A", "", "ALL")),CHR(34),"", "ALL"),CHR(39),"", "ALL")#"
    

    【讨论】:

    • 那是一团糟,完全没有必要。 CFML 有一个我在回答中提到的功能,可以干净地处理这个问题。 JSStringFormat().
    • 是的,我在系统的其他地方找到了这个 sn-p。我可能会在今天晚些时候用您回答中的函数替换它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-15
    • 2014-04-20
    • 2019-09-07
    • 2017-12-18
    • 2017-11-25
    • 1970-01-01
    相关资源
    最近更新 更多