我在我的插件中有一個對話框,當一些刪除過程完成時打開它。我用所有這些消息XUL對話框,如下所示:按下「關閉」按鈕後XUL對話框不會關閉
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://myaddon/skin/Style.css" type="text/css"?>
<!DOCTYPE overlay SYSTEM "chrome://myaddon/locale/mydtd.dtd">
<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
class="dialog" ondialogcancel="return true;">
<dialogheader id="dlgHdr"/>
<vbox flex="1" id="content" pack="center">
</vbox>
<script
type="application/x-javascript"
src="chrome://myaddon/content/mainScript.js"
/>
<script
type="application/x-javascript"
src="chrome://myaddon/content/dialogInit.js"
/>
<tfs_string id="new-profile-success" value="&newProfileSuccess.Text;"
style="overflow: hidden" />
<tfs_string id="delete-profile-success" value="&deleteProfileSuccess.Text;"
style="overflow: hidden" />
</dialog>
它取消按鈕,ondialogcancel處理函數返回true。但按下按鈕後它不會立即關閉。我必須拖動這個對話框才能讓它消失。而且,這個問題只發生在重新安裝插件後重新啓動瀏覽器。在按「取消」後,立即關閉另一個重新啓動對話框。我使用這個對話框來處理其他一些消息,並且他們沒有這樣的問題。
如果我關閉窗口並使用Chromebug調試器再次打開它,而不是使用彈出窗口重新啓動,我無法重現此錯誤。但是如果我推出另一個FF版本,然後又是第一個版本(使用調試器),我設法重現它。但是,當我在dialogcancel處理程序上使用逐步執行時,Chromebug的界面變得沒有響應(腳本內容區域除外),並且在調試器中看到執行了window.close()後,對話框不會關閉,因此必須拖動對話框再繞過一點窗戶,讓它消失。 我該怎麼辦?
如果刪除這些腳本,該怎麼辦?這裏的對話框應該可以正常工作(並且肯定不會在安裝擴展時有任何依賴關係),我懷疑問題在其他地方 - 可能在'mainScript.js'或'dialogInit.js'中。 –
事情是其他對話使用沒有任何問題(例如,新的配置文件成功初始化具有不同的消息字符串參數)。在我重新啓動瀏覽器後,此刪除過程完成對話框正常工作(所以在更新插件後重新啓動了兩次)。 –