【发布时间】:2019-09-18 06:07:19
【问题描述】:
我想知道javascript方法是否自动转义引号,因为这段代码有效:
示例 #1
<?php $foo ="hey a quote ' "; ?>
<input type="text" value="<?php echo $foo; ?>" id="foo" />
<script>
bar = document.getElementById('foo').value;
alert(bar+'there is a quote, will it work? ,');
</script>
它显示警报很好,但是这个:
示例 #2
<?php $foo ="hey a quote ' "; ?>
<button onclick="alert('<?php echo $foo; ?>');">test</button>
...没有。
显然,这是因为引用没有用 \ 转义。
但话又说回来,第一个例子中也没有,那为什么会这样呢? javascript 的方法在从 DOM 中选择内容时会自动转义引用吗?
还是只是value() 方法?
我什么都没找到,所以如果你有答案的开头,我会很高兴的。
【问题讨论】:
-
在 JavaScript 源代码中需要转义引号,以使解析器理解字符串文字的含义。一旦解析器生成了字符串值,转义就消失了。同样,浏览器通过响应键盘活动来构建字符串值。它不需要逃生机制;无论按下什么键,这些字符都会进入字符串。
-
第一个 sn-p 以
<input type="text" value="hey a quote ' " id="foo" />结尾,但第二个以<button onclick="alert('hey a quote ' ');">test</button>结尾,这是一个语法错误 -
请注意,例如,要在 HTML 中正确转义属性值的引号,您使用与 JavaScript 源代码(
&#34;和&#39;)完全不同的约定。那是因为您正在与 HTML 解析器对话,而不是 JavaScript 解析器。 -
谢谢,我没有意识到 Javascript 不像 PHP 那样在源代码中编写 HTML。
标签: javascript html dom quotes