在 Javascript 中转义引号时造成严重破坏
Havoc while escaping quotes in Javascript
我正在尝试使用以下Javascript构建一个自定义的HTML/Javascript命令(现在,"dialogText"包含蔬菜的名称,但以后也可能包含HTML标签):
str = str + "<span onClick=showDialog('"+dialogText+"')>";
当 dialogText 只有一个单词长(即"Basil")时,这将正常工作,给出以下结果:
<span onclick="showDialog('Basil')">
但是当对话框文本包含多个单词(即"甜菜根")时,这将失败。结果在语法上无效,并生成一个 Javascript 错误:
<span onclick="showDialog('Beet" root')="">
为什么会发生这种情况(等号从何而来?
我怎样才能更改代码以使其工作?
您不是在查看正在生成的 HTML,而是将该 HTML 转换为 DOM,然后将其序列化回 HTML。
由于属性值中有"
作为数据,但尚未将其表示为字符引用 ( "
),并且该值受"
限制 - "
结束属性。
然后启动一个新属性。
由于下一个属性没有值,因此当浏览器尝试纠错时,会为其分配一个空字符串。
通常,避免将字符串混合在一起以生成要转换为 DOM 的 HTML。 请直接使用 DOM 方法。
var span = document.createElement('span');
span.addEventListener('click', function (event) {
showDialog(dialogText);
});
相关文章:
- 如何使用十六进制转义来破坏JavaScript字符串
- eval() 关键字究竟是如何破坏 JavaScript 中的编译器优化的
- 为什么无限对象不会破坏javascript中的流程
- Haml form_tag 正在破坏 JavaScript
- 在 Javascript 中转义引号时造成严重破坏
- 需要忽略值中是否有任何单引号字符来自表达式语言,而不会破坏 JavaScript 代码
- JavaScript:为什么放在字符串末尾的反斜杠会破坏 JavaScript 代码
- 破坏javascript函数
- CGridView AjaxRequest破坏javascript自定义CFormatter
- 当使用.focus()时,FireFox弹出窗口拦截器会破坏javascript应用程序
- “使用Strict"破坏Javascript函数-为什么?
- 改变CSS会破坏Javascript Focus()方法
- 如何把撇号在我的消息资源,而不破坏javascript确认
- 打开PHP而不破坏JavaScript循环
- 字符串中的Hashtag会破坏JavaScript
- Google Adsense在页面上破坏JavaScript:不安全的JavaScript试图访问带有URL的框架
- 在自动优化连接资产后破坏JavaScript
- google maps -将表单元素从输入更改为选择会破坏JavaScript函数
- 可以匹配空字符串的正则表达式正在破坏javascript正则表达式引擎
- 为什么正则表达式 /[_-%]/ 会破坏 JavaScript