我正在使用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>
答案 0 :(得分:0)
使用Dijit面板而不是窗口。打开一个窗口是有风险的:一个弹出窗口阻止程序可能会阻止它,如果一个窗口已经打开并且它没有在前台获得相同的名称。如果使用选项卡,则用户没有逻辑哪个弹出窗口属于哪个选项卡。弹出窗口可能会被浏览器配置强制在选项卡中打开。
简而言之:您最好使用面板。