我一直在寻找一种在 JSF 页面中嵌入和调用 javascript 函数的方法。我也在使用 RichFaces。
为了定义该函数,我似乎可以以跨浏览器支持的方式执行此操作:
<a4j:outputPanel ajaxRendered="true">
<f:verbatim>
<script type="text/javascript">
function datum() {
alert("hi");
}
</script>
</f:verbatim>
</a4j:outputPanel>
但我不确定如何在页面加载时调用此函数,以便它返回的文本嵌入到h:outputPanel
。计划是在为客户端提供服务的页面中嵌入一个 js 时钟。注意我没有使用 body 标签,我使用的是faceletsui:composition
, f:view
(核心)和 RF RIrich:page
.
Thanks
无论您使用哪种类型的服务器端标记,当您的页面到达浏览器时,一切都消失了,只剩下 HTML 了。 (至少,最好是这样,否则无论如何都无法工作。)您需要做的是安排“load”事件处理程序调用您的代码。有多种方法可以做到这一点,但最简单的是:
<f:verbatim>
<script type="text/javascript">
window.onload = function() {
alert("hi");
}
</script>
</f:verbatim>
现在,关于初始化页面的另一部分,重要的是 HTML 中最终的内容。您需要安排某种 HTML 容器(一个<div>
或其他东西,具体取决于您的页面设计)并且您会希望它具有唯一的“id”属性。然后,您的 Javascript 可以使用“id”来查找元素并设置其内容:
var elem = document.getElementById("whatever");
elem.innerHTML = // ... whatever ;
您可能会在“load”函数中执行这些操作。
另外,如果您使用 Facelets 而不是 JSP(这是一种基于 XML 的视图技术),并且您的 JavaScript 包含注释 // 或文字(例如 、&& 等),则需要添加 XML CDATA 节分隔符。带有 XML CDATA 分隔符的示例:
<f:verbatim>
<script type="text/javascript">
//<![CDATA[
//Comments won't show error now.
window.onload = function() {
alert("hi");
}
//]]>
</script>
</f:verbatim>
你可以看到详细的解释何时在这里使用 CDATA。 https://stackoverflow.com/questions/66837/when-is-a-cdata-section-necessary-within-a-script-tag如果您要创建 HTML5 页面,则不需要这些。
快乐编码!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)