gpt4 book ai didi

firefox-addon - 在 Firefox 扩展中使用 XUL 对话框

转载 作者:行者123 更新时间:2023-12-04 03:46:08 25 4
gpt4 key购买 nike

我需要在 Firefox 扩展启动后打开一个模态对话框,然后在特定条件下关闭它。

我在 XUL 文件中使用 id = 'myWindowName' 定义了对话框,然后使用 window.openDialog('xul url', 'myWindowName', ... ) 直接,而不将其分配给任何变量。

然后,我在后面的函数中定义 y = document.getElementById('myWindowName') 并使用 y.cancelDialog() 关闭它。

到目前为止,它看起来好像有效,但我想问一下这个方法是否正确。

y=window.openDialog("url', 'myWindowName', ...) 是否返回与 y=document.getElementByID('myWindowName') 相同的引用 ?

此外,为什么 window.cancelDialog() 不起作用? window.close() 是自动关闭对话框的更好选择吗?

最佳答案

阅读Working with windows in chrome code .

您似乎不知道 Firefox(以及常规网页)中不止一个“作用域”。我的意思是:每个窗口、选项卡和 iframe 都有自己的一组对象(全局对象,即 Window 对象、文档等)。除此之外,有时“范围”有自己的全局对象,但没有 DOM(没有 windowdocument)- XPCOM 组件、jsm 模块、worker、沙箱。

openDialog返回新对话框的 window 对象。 <dialog id='myWindowName'> element 可以在该窗口的文档中访问,语法取决于想要访问它的脚本运行的位置:如果它在对话框中运行,它可以使用 document.getElementById() ,而另一个窗口中的脚本必须通过对对话框窗口的引用来访问它(例如,dialogWindow):dialogWindow.document.getElementById() .

cancelDialog是 XUL 上的一个方法 <dialog> 元素,而close()是一个窗口的方法,这就是 window.cancelDialog() 不起作用而 window.close() 起作用的原因。

至于哪个对话cancelDialogwindow.close()是“更好”:cancelDialog 做的不仅仅是一个简单的 window.close()(参见 its code on mxr)——与按下对话框上的取消按钮时的步骤相同。所以在关闭窗口之前,它会检查对话框的取消按钮是否被禁用,然后触发 ondialogcancel 事件让感兴趣的代码阻止这种情况发生,然后如果一切正常,它会通过 window.close() 关闭窗口。 .

关于firefox-addon - 在 Firefox 扩展中使用 XUL 对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8351962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com