我的插件中有一个对话框,当某些删除过程完成时会打开。我对所有此类消息使用 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() 执行后对话框没有关闭,所以我必须拖动对话框窗口再绕一圈使其消失。我该怎么办?