gpt4 book ai didi

jsf-2 - JSF 2.2 CDATA 被转义

转载 作者:行者123 更新时间:2023-12-04 00:40:57 24 4
gpt4 key购买 nike

升级到 Mojarra 2.2.3 后,我发现了一些奇怪的行为。以下 Javascript 声明被破坏:

在 .xhtml 文件中:

<script type="text/javascript">
<!-- /* <![CDATA[ */
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
/* ]]> */-->
</script>

这被破坏成以下废话:

<script type="text/javascript">
<!-- /* &lt;![CDATA[ */
$(document).ready(function() {
if ($('#some_identifier').size() &gt; 0)
...
/* ]]&gt; */-->
</script>

这会破坏 .xhtml 文件中嵌入的所有 javascript 代码。我确认这不会发生在我们之前使用的版本 (2.0.x) 上,因此我必须假设它与新的 Mojarra 版本有关。关于如何解决或解决这个问题的任何想法?

最佳答案

此 CDATA 语法完全无效。目前尚不清楚你从哪里得到这个以及为什么你认为它是有效的。也许您将它与 CSS 代码的 CDATA 语法混淆了。无论如何,为了在 JS 代码中使用正确的 CDATA 语法,请仔细阅读这篇 Mozilla 开发者网络文章:Writing JavaScript for XHTML .

有效(现代)语法是:

<script type="text/javascript">
<![CDATA[
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
]]>
</script>

如果你真的,真的需要支持世界上没有人使用的旧浏览器,那么使用下面的语法,它应该在那些本身不支持 JavaScript 的浏览器中工作,因此无法解析 <script>元素(想知道你自己的 JSF 应用程序,丰富的 JavaScript,仍然可以在那些网络浏览器上运行吗?为它们转义 JS 真的有用吗?)

<script type="text/javascript">
<!--//--><![CDATA[//><!--
$(document).ready(function() {
if ($('#some_identifier').size() > 0)
...
//--><!]]>
</script>

顺便说一句,更好的方法是将该 JS 代码放在它自己的 .js 中。文件。

另见:

关于jsf-2 - JSF 2.2 CDATA 被转义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18849528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com