当 2 javascript 命令在 onclick 时导航到新选项卡挂起
Navigation to new tab hangs when 2 javascript commands in onclick
使用 PF 10、JSF 2.3
我尝试在用户单击“下载报告”时在新选项卡中打开 url
xhtml 页面:
<script type="text/javascript">
//<![CDATA[
function start() {
PF('statusDialog').show();
}
function stop() {
PF('statusDialog').hide();
}
//]]>
</script>
<h:form>
<p:menubar>
<p:menuitem value="Home" action="#{umigonBean.logout}" icon="pi pi-home"/>
<p:menuitem value="Download report" action="#{umigonBean.getReport}" onclick="PrimeFaces.monitorDownload(start);" icon="pi pi-arrow-down" oncomplete="PrimeFaces.monitorDownload(stop);"/>
</p:menubar>
</h:form>
支持 bean(会话范围,如果重要的话):
public void getReport(){
// report being generated in the form of a Google Slide...
// when it is generated, a redirect is made to the url of this Google Slide:
FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().redirect("http://docs.google.com/etc");
}
@BalusCfor a commandButton建议的解决方案是:
<h:form target="_blank">
(不适用,因为我的表格包含不同的链接,只有这个应该打开一个新标签)
onclick="this.form.target='_blank'"
在我上面的代码中,这将是:
onclick="this.form.target='_blank';PrimeFaces.monitorDownload(start);"
然而,当我选择此选项时,不会调用该操作(“等待”window 出现并永远保留)。
这可以通过发布的答案的第 3 点解决 here:
public void submit() {
// ...
PrimeFaces.current().executeScript("window.open('myUrl');");
}
使用 PF 10、JSF 2.3
我尝试在用户单击“下载报告”时在新选项卡中打开 url
xhtml 页面:
<script type="text/javascript">
//<![CDATA[
function start() {
PF('statusDialog').show();
}
function stop() {
PF('statusDialog').hide();
}
//]]>
</script>
<h:form>
<p:menubar>
<p:menuitem value="Home" action="#{umigonBean.logout}" icon="pi pi-home"/>
<p:menuitem value="Download report" action="#{umigonBean.getReport}" onclick="PrimeFaces.monitorDownload(start);" icon="pi pi-arrow-down" oncomplete="PrimeFaces.monitorDownload(stop);"/>
</p:menubar>
</h:form>
支持 bean(会话范围,如果重要的话):
public void getReport(){
// report being generated in the form of a Google Slide...
// when it is generated, a redirect is made to the url of this Google Slide:
FacesContext context = FacesContext.getCurrentInstance();
context.getExternalContext().redirect("http://docs.google.com/etc");
}
@BalusCfor a commandButton建议的解决方案是:
<h:form target="_blank">
(不适用,因为我的表格包含不同的链接,只有这个应该打开一个新标签)onclick="this.form.target='_blank'"
在我上面的代码中,这将是:
onclick="this.form.target='_blank';PrimeFaces.monitorDownload(start);"
然而,当我选择此选项时,不会调用该操作(“等待”window 出现并永远保留)。
这可以通过发布的答案的第 3 点解决 here:
public void submit() {
// ...
PrimeFaces.current().executeScript("window.open('myUrl');");
}