window.open从dojo dijit.dialog打开时失去焦点

时间:2013-07-16 11:14:38

标签: xpages dojo

我正在使用Dojo 1.8 - dijit.Dialog从我的应用程序中打开一个对话框。在“对话框”窗口中,有一个图标可显示帮助。如果单击此帮助,它将打开一个新窗口(使用window.open)并显示帮助文本。

该代码适用于Firefox,但不适用于IE(IE 8,9,10的所有版本)。帮助窗口始终位于父窗口的后面。 Alt + Tab也没有将帮助窗口带到前面。 (当您在其他屏幕上,然后Alt + Tab会显示帮助窗口时)。

如果直接在没有对话框的页面中调用该函数,那么它也适用于IE。如果我使用dojo 1.6,那么代码可以在IE中使用。问题仅在于dojo 1.8

我使用自动对焦为false,在帮助窗口中重新聚焦为false和window.focus。但没有任何帮助。关于这方面的帮助或指示将不胜感激。感谢

注意:应用程序在Xpage上,因此您可以忽略某些标记。问题与Dojo有关

代码是这样的。共有3页。第一页包含2个Javascrip函数和一个打开对话框的链接。第二页是一个对话框,其中包含使用window.open打开“帮助”页面的链接。第三页只是帮助文本。

Page 1

<a onclick="javascript:modalwindojo('Dijit Dialog','FirstDialog.xsp','dialog1')" href="#">modalwindow</a>

第2页 - 对话框页面

<a href="javascript:openHelp('FirstHelp.xsp');" id="link2">Help</a>

第3页 - 帮助页面 只需将onloadevent作为<script>window.focus();</script>

发送

JavaScript函数

<script>
function openHelp(helpUrl){  

    windowHelpObjectReference = window.open(helpUrl,   
            "Help", "resizable=yes,scrollbars=no,status=yes,width=700,height=500");   
    windowHelpObjectReference.focus(); 

} 
dojo.require("dijit.Dialog");
function modalwindojo(dtitle, link, dialogId)
{
   var dlg = dijit.byId(dialogId);
   if (!dlg) { 
    dlg = new dijit.Dialog({
    title : dtitle,
        href : link,
        autofocus :false ,
        refocus : false 

        }, dojo.byId(dialogId));
  }

 // dlg.startup();
  dlg.show();

}

</script>

1 个答案:

答案 0 :(得分:0)

使用Dijit面板而不是窗口。打开一个窗口是有风险的:一个弹出窗口阻止程序可能会阻止它,如果一个窗口已经打开并且它没有在前台获得相同的名称。如果使用选项卡,则用户没有逻辑哪个弹出窗口属于哪个选项卡。弹出窗口可能会被浏览器配置强制在选项卡中打开。

简而言之:您最好使用面板。