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

时间:2015-01-17 10:15:07

标签: javascript jsf-2

我将旧的webapp从JSF1.X升级到JSF2.X.在教程中,我发现我必须将<body>替换为<h:body>。问题是我在调整浏览器窗口大小时使用了javascript方法来计算高度(<body onresize="myFunction()">)。遗憾的是,<h:body>不存在onresize事件。 我有什么想法可以解决这个问题吗?提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

<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?

但是,使用<body onresize>

这种方法存在2个(次要)问题
  1. 您应该将其挂钩到JS中的window,而不是HTML中的<body>

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