[英]Ajax call/javascript - working fine on IE, Firefox and Safari but not on Chrome
[英]Why JSF backing bean function not call from JavaScript in Firefox but working fine in IE and Chrome?
我正在尝试在卸载页面时从JavaScript触发JSF支持bean函数。 在IE和chrome中可以正常工作,但在Firefox中则不能。
这是在XHTML中如何触发onunload
事件的方法:
<h:body onunload="onPageUnload()">
<h:form id="theForm">
<p id="hiddenButton" style="display:none">
<h:commandLink id="hiddenCloseEvent" styleClass="button" action="#{theBean.doHiddenCloseEvent}">
<f:param name="action" value="CLOSE"/>
</h:commandLink>
</p>
...
</form>
</h:body>
收到unload事件时,将执行以下JavaScript。 有2个版本,一个用于IE,另一个用于Google Chrome。
IE版本:
function onPageUnload() {
if( detailPage == "false" ) {
document.getElementById('theForm:hiddenCloseEvent').click();
}
}
Google Chrome版本:
window.onbeforeunload = function(e) {
onPageUnload();
};
当onPageUnload()
执行时,它将触发隐藏的输入按钮JSF组件click事件,然后触发JSF后备bean theBean
,功能theBean.doHiddenCloseEvent
进行一些处理。 现在的情况是,JSF函数是在IE和Google Chrome版本中执行的,但没有在Firefox中触发,请问该如何解决?
更新
我已经修改了如下代码:
function onPageUnload() {
if( detailPage == "false" ) {
alert('before');
document.getElementById('theForm:hiddenCloseEvent').click();
alert('after');
}
}
从上面的代码中,我发现before
提示,而after
则不提示。 该测试用例用于验证该组件在Web浏览器中是否不可见。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.