2013-07-16 74 views
0

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

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

如果在没有对话框的页面中直接调用该函数,那么它也可以在IE中使用。如果我使用dojo 1.6,那么代码在IE中工作。问题只出现在道场1.8

我已经使用自动对焦为false,重新调整为false,并在帮助窗口window.focus。但没有任何帮助。帮助或指针在这将不胜感激。由于

注:应用程序在XPage上,这样你就可以忽略某些tags.The问题是关系到道场

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

<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> 
+0

您需要具体针对您的IE版本,它们的行为都不相同。 – stwissel

+0

从对话框打开窗口听起来就像用户不会欣赏的用户界面模式。您是否考虑过Dojo面板?它也可以加载一个url – stwissel

+0

它发生在所有的IE版本(8,9和10)。我们已经从1.6迁移到1.8,所以我们没有想到Dojo Panel或任何其他解决方案。如果我们不能解决这个问题,那么我们需要重新考虑解决方案。 –

回答

0

使用Dijit的面板,而不是一个窗口。打开一个窗口是有风险的:一个弹出式窗口拦截器可能会阻止它,如果一个窗口已经打开,并且它没有在前台打开。如果您使用选项卡,那么对于用户而言,哪些弹出窗口属于哪个选项卡是没有逻辑的。通过浏览器配置,弹出窗口可能会被强制打开。简而言之:你最好用一个小组。