2011-03-16 77 views
0

我的網頁上有兩個'嵌套'或'級聯'對話框(一個對話框打開另一個對話框),當我試圖關閉'最頂層'對話。問題與嵌套的Dojo.Dialog的

下面是情形:

  1. 對話框1被打開
  2. 對話框2由按鈕打開的對話框1
  3. 對話2的內側上的按鈕閉合單擊用下面的代碼:

    dialog2.hide();
    dialog2.destroyRecursive();

  4. 問題發生。

「問題」被定義爲「模式」(在一個對話框是模態)丟失的對話框2(這意味着你現在可以用對話1交互),以及丟失的對話框1(意思您可以與對話框後面的頁面交互),但對話框1 仍然存在

有趣的是,當您在右上角使用X來關閉對話框時,不會出現此問題。有沒有更好的方式來關閉對話框?

編輯:我使用道場1.5

+0

您使用的是什麼版本的Dojo?嵌套對話框應該在Dojo 1.4中工作。如果你在更近的地方,你可能想要在bugs.dojotoolkit.org上提交一張票。 – peller 2011-03-16 03:14:15

+0

我有嵌套的對話框沒有問題與1.5。嘗試跳過destroyRecursive()調用或將其更改爲destroy()以查看是否有任何差異。 – 2011-03-16 04:13:50

+0

您聽到的聲音可能會遇到與此處所述相同的問題? http://stackoverflow.com/questions/5285758/dojo-dijit-dialog-destroy-underlay-error – 2011-03-16 11:41:16

回答

1

我有嵌套對話與1.5沒有概率工作。

嘗試跳過destroyRecursive()致電或將其更改爲destroy()以查看是否有任何差異。

另外,你是否在你的點擊處理程序中調用hide()?嘗試設置一個計時器,在處理程序返回後調用hide()。我記得調用hide來處理一個處理程序中的對話框有時候會搞砸了。

通過你的意思是「失去模式」,真正發生的是對話框底圖被隱藏起來了。襯底是與dijit.DialogUnderlay類相鏈接的DIV(好的,div內的div),div通常在dijig.Dialog.show上顯示,在hide時隱藏。 div覆蓋整個屏幕區域,這是提供「模式」的內容。

你也應該進入你最喜歡的web開發工具(Firebug或WebKit/IE的開發工具)來檢查這個底層div。它應該在你的最後body。看看它是否隱藏。