【发布时间】:2015-12-19 05:07:30
【问题描述】:
我有一个 Xpage,它会在点击时打开弹出窗口,例如,我创建了 2 个按钮,即“popUp_form_clientSide”和“popUp_form_serverSide”
popUp_form_clientSide 在调用“doPopup()”函数的客户端有事件。
popUp_form_serverSide 在view.postScript("doPopup()"); 的帮助下从服务器端调用相同的函数
doPopup() 在脚本中加载客户端。
Xpage 代码:
<xp:button value="popUp_form_clientSide" id="button4">
<xp:eventHandler event="onclick" submit="false">
<xp:this.script><![CDATA[var link ="http://google.com";
doPopup(link);]]>
</xp:this.script>
</xp:eventHandler>
</xp:button>
<xp:button value="popUp_form_serverSide" id="button3">
<xp:eventHandler event="onclick" submit="true"
refreshMode="partial" refreshId="button4">
<xp:this.action><![CDATA[#{javascript:var link ="xx_openConfigPageN.xsp?docName=K1&pageName=K1&action=newDocument"
view.postScript("doPopup('"+link+"');")}]]>
</xp:this.action>
</xp:eventHandler>
</xp:button>
javaScript doPopup() 代码:
var popupWindow = null;
var doPopup = function (link)
{
if (popupWindow && !popupWindow.closed)
{
popupWindow.focus();
alert("In focus")
}
else
{
popupWindow = window.open(link,"New",
"width=200,height=200");
alert("New");
}
};
现在,如果我点击客户端按钮,它可以正常工作,例如它会打开带有传递变量链接的弹出窗口,如果我再次点击它会检查是否已经打开并聚焦窗口而不是打开新窗口。所以这是完美的,
但是当我点击服务器端按钮时,它会正常打开弹出窗口,这是完美的,当我再次点击它时,它会进入 if 条件警告“焦点”消息,但不会将窗口放在前面(window.焦点()),
它经常聚焦窗口,但并非总是如此,相比之下,客户端按钮效果很好。
我不知道我在这里做错了什么,或者如果已经打开,有没有其他好的方法可以专注于窗口。
我想让它从服务器端工作,因为链接变量包含大量来自数据库和条件的内容,所以我选择服务器端来做这件事。
【问题讨论】:
标签: window focus xpages xpages-ssjs