JSF2.0 中 <h:body> 的 onresize 在哪里

Where is onresize for <h:body> in JSF2.0

我正在将我的旧 Web 应用程序从 JSF1.X 升级到 JSF2.X。在教程中我看到我必须用 <h:body> 替换 <body>。问题是当我调整浏览器的 window (<body onresize="myFunction()">) 大小时,我使用了 javascript 方法来计算高度。不幸的是,<h:body> 不存在 onresize 事件。 知道我可以解决这个问题吗?提前致谢。

如果您使用的是 JSF 2.2,则可以使用直通属性。

<html ... xmlns:a="http://xmlns.jcp.org/jsf/passthrough">
...
<h:body a:onresize="foo()">

如果您使用的是 2.0(已经超过 5 年),那么您无法绕过 HtmlBody 的自定义渲染器。可以在此处找到启动示例:How to spefic the body id attribute in JSF 2?

但是,这种方法有 2 个(小的)问题 <body onresize>:

  1. 你应该将它挂接到 JS 中的 window,而不是 HTML 中的 <body>

    window.onresize = foo();
    
  2. 您应该将 (X)HTML 文档中的 JavaScript 代码量保持在绝对最小值,并尽可能多地放在自己的文档中.js 文件。因此,比 on*** 属性更喜欢真正的 JS 文件(就像你应该更喜欢真正的 CSS 文件而不是 style 属性)。