升级到 Mojarra 2.2.3 后我发现了一些奇怪的行为。以下 Javascript 声明被破坏:
在 .xhtml 文件中:
<script type="text/javascript">
<!-- /* <![CDATA[ */
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
/* ]]> */-->
</script>
这被扭曲成以下废话:
<script type="text/javascript">
<!-- /* <![CDATA[ */
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
/* ]]> */-->
</script>
这会破坏 .xhtml 文件中嵌入的所有 javascript 代码。我验证了我们之前使用的版本(2.0.x)不会发生这种情况,所以我必须假设它与新的 Mojarra 版本有关。关于如何解决此问题或解决此问题有什么想法吗?
此 CDATA 语法完全无效。目前尚不清楚你从哪里得到这个以及为什么你认为它是有效的。也许您将它与 CSS 代码的 CDATA 语法混淆了。无论如何,要了解 JS 代码中正确的 CDATA 语法,请仔细阅读这篇 Mozilla 开发者网络文章:为 XHTML 编写 JavaScript https://developer.mozilla.org/en/docs/Writing_JavaScript_for_XHTML.
有效的(现代)语法是:
<script type="text/javascript">
<![CDATA[
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
]]>
</script>
如果你真的真的需要支持世界上没有人使用的旧浏览器,那么使用以下语法,它应该适用于那些本身不支持 JavaScript 的浏览器,因此无法解析<script>
元素(想知道,您的 JSF 应用程序富含 JavaScript,是否仍然可以在 Web 浏览器上运行?为它们转义 JS 真的有用吗?)
<script type="text/javascript">
<!--//--><![CDATA[//><!--
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
//--><!]]>
</script>
顺便一提,much更好的方法是将 JS 代码放在自己的代码中.js
file.
也可以看看:
- 解析 XHTML 时出错:元素的内容必须由格式正确的字符数据或标记组成 https://stackoverflow.com/questions/4338538/error-parsing-xhtml-the-content-of-elements-must-consist-of-well-formed-charact/4338816#4338816
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)