来自动态数据的JavaScript字符串声明,带有未加引号
JavaScript string declarations from dynamic data with unescaped quotation marks
我正在为一个内容管理系统编写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中对此无能为力。
相关文章:
- 以纯文本加载的脚本-未声明纯文本文档的字符编码
- 如何从Java和Javascript生成相同的cookie(不加双引号)
- 如何为将通过AJAX加载的元素声明事件处理程序
- 在JS中用引号声明对象和数组是否更快
- 基金会手风琴如果未在 HTML 中声明,则不加载
- 如果已经声明了宽度,则在页面加载后更改图像宽度?如果未声明宽度,则宽度将更改,但如果像我一样声明,则不会更改
- 如何从加载的 JavaScript 文件中访问在 yepnope.js 中声明的变量
- JavaScript 声明的函数在脚本加载时消耗多少内存
- jQuery - 如何在引号中包围 Ajax 加载的元素
- 简单的web服务器示例-为什么我必须将属性名称加引号
- Javascript什么是“'+aStringVarible+'"(双引号加单引号)做
- 如何设置<A>在实时HTMLDocument中标记,并在其周围加引号
- 来自动态数据的JavaScript字符串声明,带有未加引号
- Javascript字符串变量不加引号
- 反转一个字符串,为什么要加引号
- 当设置为JavaScript对象的属性名时,保留字是否需要加引号
- 为什么变量在一种情况下用单引号发送,而在另一种情况下不加引号
- Javascript TRUE未定义或未加引号
- JQuery变量值加引号
- 为什么在CSS选择器中,我需要在带有@的属性值周围加引号