2013-07-16 64 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的面板,而不是一個窗口。打開一個窗口是有風險的:一個彈出式窗口攔截器可能會阻止它,如果一個窗口已經打開,並且它沒有在前臺打開。如果您使用選項卡,那麼對於用戶而言,哪些彈出窗口屬於哪個選項卡是沒有邏輯的。通過瀏覽器配置,彈出窗口可能會被強制打開。簡而言之:你最好用一個小組。