gpt4 book ai didi

javascript - JSF 1.2 注入(inject) javaScript 导致 w3c 验证失败

转载 作者:行者123 更新时间:2023-11-28 21:01:09 25 4
gpt4 key购买 nike

我们项目的目标之一是确保渲染的 HTML 100% 符合 xhtml 1.0 过渡语法,该项目具有严格的 DDA 要求。可悲的是,我有一个无法消除的错误。这是因为 JSF 正在将以下 JavaScript 代码片段注入(inject)到页面中(为了清晰起见,进行了格式化),由于它没有包含在 CDATA 中,因此被 w3c 验证器拒绝并显示以下消息:

Line 443, Column 122: character "<" is the first character of a delimiter but occurred as data

…dp;if (adp != null) {for (var i = 0;i < adp.length;i++) {f.removeChild(adp[i])…

?

This message may appear in several cases:

You tried to include the "<" character in your page: you should escape it as "&lt;"
You used an unescaped ampersand "&": this may be valid in some contexts, but it is recommended to use "&amp;", which is always safe.
Another possibility is that you forgot to close quotes in a previous tag.

我的问题是,JSF 是否可以将脚本 block 包装在 CDATA 中或将脚本外部化?

<script type="text/javascript" language="Javascript">
function dpf(f) {
var adp = f.adp;
if (adp != null) {
for (var i = 0;i < adp.length;i++) {
f.removeChild(adp[i]);
}}};

function apf(f, pvp) {
var adp = new Array();
f.adp = adp;
var ps = pvp.split(',');
for (var i = 0,ii = 0;i < ps.length;i++,ii++) {
var p = document.createElement("input");p.type = "hidden";p.name = ps[i];p.value = ps[i + 1];
f.appendChild(p);
adp[ii] = p;i += 1;
}};

function jsfcljs(f, pvp, t) {
apf(f, pvp);
var ft = f.target;
if (t) {
f.target = t;
}
f.submit();
f.target = ft;dpf(f);
};
</script>

最佳答案

如果不编辑 JS 文件本身,这是不可能的。

摘录jsf-impl.jar文件,复制com/sun/faces/sunjsf.js以完全相同的包结构将文件放入 webapp 项目中,即 sunjsf.js文件内com.sun.faces包裹。编辑<&lt;并保存它。该文件将优先于类加载层次结构中 JAR 文件中的文件,因此将被使用。

或者,您也可以随时使用编辑后的 ​​JS 文件重建 JAR 文件本身。

关于javascript - JSF 1.2 注入(inject) javaScript 导致 w3c 验证失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11028696/

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