&;的onXXX处理程序转义中的javascript;in参数
我有一个带有onclick javascript的脚本。此javascript调用JS库(包含在pagehead中)中的某些函数。在函数参数中转义&字符的正确方法是什么(或是否需要)?例如:&;的onXXX处理程序转义中的javascript;in参数,javascript,Javascript,我有一个带有onclick javascript的脚本。此javascript调用JS库(包含在pagehead中)中的某些函数。在函数参数中转义&字符的正确方法是什么(或是否需要)?例如: <a href="#" onclick="showPop(this,1,'url.pop','m123','&f=a');"> vs 或者它是否取决于文档类型(html4/xhtml/html5/???),例如: <?xml version="1.0" encoding=
<a href="#" onclick="showPop(this,1,'url.pop','m123','&f=a');">
vs
或者它是否取决于文档类型(html4/xhtml/html5/???),例如:
<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="nl" xml:lang="nl" xmlns="http://www.w3.org/1999/xhtml">
vs
一般来说,最好的做法是首先远离
onXyz
属性处理程序,尤其是因为处理涉及的不同文本解释层的复杂性。相反,使用现代事件处理。也就是说:
属性中的文本是HTML文本,在编写JavaScript代码时很容易忘记它。:-)如您所述,为了在HTML中表示符号和,我们使用&代码>:
<a href="#" onclick="showPop(this,1,'url.pop','m123','&f=a');">
<!-- Note --------------------------------------------^^^^^ -->
该属性的结果值将是&f=a
,因为浏览器的HTML解析器在读取HTML文本时会对其进行解释,并相应地设置属性值
还是取决于文档类型(html4/xhtml/html5/??)
没有<代码>&
是&代码>在HTML4、XHTML和HTML5中。一般来说,最好的做法是首先远离onXyz
属性处理程序,尤其是因为处理涉及的不同文本解释层的复杂性。相反,使用现代事件处理。也就是说:
属性中的文本是HTML文本,在编写JavaScript代码时很容易忘记它。:-)如您所述,为了在HTML中表示符号和,我们使用&代码>:
<a href="#" onclick="showPop(this,1,'url.pop','m123','&f=a');">
<!-- Note --------------------------------------------^^^^^ -->
该属性的结果值将是&f=a
,因为浏览器的HTML解析器在读取HTML文本时会对其进行解释,并相应地设置属性值
还是取决于文档类型(html4/xhtml/html5/??)
没有<代码>&
是&代码>在HTML4、XHTML和HTML5中。非常感谢!问这个问题的原因是:我正在将javascript从页面移动到事件处理程序(使用jQuery)。政府;在以后的某一点上给出一个错误。我的确切问题是,我将不得不在一段时间内维护这两个版本:(我私下希望这两个符号都是有效的…;)@hetOrakel:Oh fun.:-)是的,在JavaScript代码中,它必须是“&f=a”
。大多数浏览器都能容忍无效的HTML标记。HTML5规范甚至详细说明了如果浏览器在HTML文本中看到&
,然后看到一些它无法理解为字符实体的内容时应该做什么。因此,通常情况下,即使在属性中也可以使用“&f=a”
,因为浏览器会看到它不是有效的字符实体,备份其解析器,并将其视为文本&
。但是,如果你碰巧写了一些可以被看作是实体的东西,那会咬到你的。@hetOrakel:人们总是在URL中意外地依赖它。考虑:
这是无效的。应该是
,但我们一直在这样做,这就是为什么浏览器是宽容的。非常感谢!问这个问题的原因是:我正在将javascript从页面移动到事件处理程序(使用jQuery)。政府;在以后的某一点上给出一个错误。我的确切问题是,我将不得不在一段时间内维护这两个版本:(我私下希望这两个符号都是有效的…;)@hetOrakel:Oh fun.:-)是的,在JavaScript代码中,它必须是“&f=a”
。大多数浏览器都能容忍无效的HTML标记。HTML5规范甚至详细说明了如果浏览器在HTML文本中看到&
,然后看到一些它无法理解为字符实体的内容时应该做什么。因此,通常情况下,即使在属性中也可以使用“&f=a”
,因为浏览器会看到它不是有效的字符实体,备份其解析器,并将其视为文本&
。但是,如果你碰巧写了一些可以被看作是实体的东西,那会咬到你的。@hetOrakel:人们总是在URL中意外地依赖它。考虑:
这是无效的。它应该是
,但我们一直在这样做,这就是为什么浏览器是宽容的。
<a href="#" onclick="showPop(this,1,'url.pop','m123','&f=a');">
<!-- Note --------------------------------------------^^^^^ -->