我正在为内容管理系统编写JavaScript模板,用户填写传递给我的模板的文本输入字段。
我的问题是输入字段中的引号在传递给我的模板之前没有被转义,所以我无法知道它们是包含单引号还是双引号,甚至两者都不包含。无论我尝试处理数据的哪种方式,我的代码最终都会破坏,因为引号会终止字符串声明。我想在数据上运行一个函数来转义引号,但是我找不到一种方法来首先将数据转换为有效的变量。
有没有办法安全地处理JavaScript中的数据而不破坏字符串变量声明?
编辑:我正在发布代码示例;
CMS文字输入字段值是:谁将赢得我们的“大赛”?
文本输入字段占位符宏是[%TextInput%]
我正在使用JS / HTML / CSS
为此输入构建HTML模板<script>
(function(){
var textInputStr = "[%TextInput%]";
})();
</script>
如果TextInput的值包含单引号,则会破坏字符串声明,反之亦然。
答案 0 :(得分:0)
我想在数据上运行一个函数来转义引号,但是我找不到一种方法来首先将数据转换为有效变量。
好吧,你必须在之前使它成为一个有效的字符串文字,你可以在其上运行JavaScript函数。没有其他办法(除非你计算模板脚本的ajax请求以获取它的字符串表示)。
输入字段在传递到我的模板
之前不会被转义
然后解决这个问题。在JavaScript中你无能为力。
答案 1 :(得分:0)
这是一个很棒的问题,值得回答。 JS中的字符串没有自定义分隔符,就像大多数其他现代语言一样,因此您可能会陷入困境。但是一个解决方案是使用其中的占位符构建脚本标记,然后找到该标记的innerHTML并将字符串重新捕获到变量中。例如
<script id="parseMe" type="text/template">
[%TextInput%]
</script>
然后使用
var yourString = document.getElementById("parseMe").innerHTML
现在您可以随意操作字符串。
HTH!