来自动态数据的JavaScript字符串声明,带有未加引号

JavaScript string declarations from dynamic data with unescaped quotation marks

本文关键字:加引号 声明 字符串 动态 数据 JavaScript      更新时间:2023-09-26

我正在为一个内容管理系统编写JavaScript模板,用户可以在该系统中填写传递给我的模板的文本输入字段。

我的问题是输入字段中的引号在传递到模板之前没有转义,所以我无法知道它们是包含单引号还是双引号,甚至两者都包含。无论我尝试以何种方式处理数据,我的代码都会中断,因为引号终止了字符串声明。我想对数据运行一个函数来转义引号,但我找不到先将数据放入有效变量的方法。

有没有什么方法可以在JavaScript中安全地处理数据而不破坏字符串变量声明?

编辑:我正在张贴代码示例;

CMS文本输入字段的值是:谁将赢得我们的"大赛"?

文本输入字段占位符宏为[%TextInput%]

我正在为这个输入构建一个HTML模板,只使用JS/HTML/CSS

<script>
(function(){
  var textInputStr = "[%TextInput%]";
})();
</script>

如果TextInput的值包含一个引号,这将破坏字符串声明,反之亦然。

这是一个很棒的问题,值得回答。JS中的字符串没有像大多数其他现代语言那样的自定义分隔符,所以您可能会陷入困境。但一种解决方案是构建一个包含占位符的脚本标记,然后找到该标记的innerHTML,并将字符串获取回变量中。例如

<script id="parseMe" type="text/template">
[%TextInput%]
</script>

然后使用

var yourString = document.getElementById("parseMe").innerHTML

现在你可以随心所欲地操纵字符串了。

啊!

我想对数据运行一个函数来转义引号,但我找不到先将数据放入有效变量的方法。

好吧,在上运行JavaScript函数之前,你必须使它成为一个有效的字符串文本。没有其他方法(除非你向模板脚本发出ajax请求以获得它的字符串表示)。

输入字段在传递到我的模板之前没有转义

然后修复它。在JavaScript中对此无能为力。