我有一个Xpage打开popUp窗口点击,仅举例来说我创建了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条件警告“对焦”消息,但不将窗口放在前面(窗口。焦点()),
它经常聚焦窗口,但并非总是如此,在对比中,客户端按钮工作正常。
我不知道我在这里做错了什么,或者如果已经打开,有没有其他好办法专注于窗口。
我想让它从服务器端运行,因为链接变量包含来自数据库和条件的大量内容,所以我选择serverSide来执行此操作。