2

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

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

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

编辑:我发布代码示例;

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

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

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

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

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

4

2 回答 2

0

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

好吧,您必须先使其成为有效的字符串文字,然后才能在其上运行 JavaScript 函数。没有其他方法(除非您计算对模板脚本的 ajax 请求以获取它的字符串表示)。

输入字段在传递给我的模板之前不会被转义

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

于 2013-07-19T15:22:29.517 回答
0

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

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

然后使用

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

现在您可以随意操作字符串了。

于 2014-03-05T21:50:46.433 回答