Javascript 如何访问contentEditable元素的编辑器?

Javascript 如何访问contentEditable元素的编辑器?,javascript,firefox,dom,firefox-addon,xul,Javascript,Firefox,Dom,Firefox Addon,Xul,当我的分机访问Firefox中当前显示网页的输入(键入“text”)或TEXTAREA元素时,我可以使用QueryInterface将其强制转换为类型为nsIDOMNSEditableElement的JS对象,然后我可以使用.editor访问关联的nsIEditor 但是,Firefox也支持其他可编辑元素,例如,如果属性contentEditable设置为true,则任何元素(及其子元素)都是可编辑的。此外,如果将designMode设置为on,则整个文档可以编辑。无论哪种情况,可编辑元素都不

当我的分机访问Firefox中当前显示网页的
输入
(键入
“text”
)或
TEXTAREA
元素时,我可以使用
QueryInterface
将其强制转换为类型为
nsIDOMNSEditableElement
的JS对象,然后我可以使用
.editor
访问关联的
nsIEditor

但是,Firefox也支持其他可编辑元素,例如,如果属性
contentEditable
设置为
true
,则任何元素(及其子元素)都是可编辑的。此外,如果将
designMode
设置为
on
,则整个文档可以编辑。无论哪种情况,可编辑元素都不是
nsIDOMNSEditableElement
的实例<对于
nsIDOMNSEditableElement
的code>QueryInterface失败

由于这些可编辑元素也可以启用拼写检查(如果它们的属性
spellcheck
设置为
true
),我假设有一个实例
nsIEditor
与它们关联

如何获取对它的引用?

对于可编辑帧(通过
designMode
属性),您可以如下方式检索它:

var session = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                    .getInterface(Components.interfaces.nsIWebNavigation)
                    .QueryInterface(Components.interfaces.nsIInterfaceRequestor)
                    .getInterface(Components.interfaces.nsIEditingSession);
if (session.windowIsEditable(window)
  editor = session.getEditorForWindow(window);
至于
contentEditable
,你似乎运气不好。我找不到从JavaScript访问编辑器的方法:
nsGenericHTMLElement
类有一个
GetEditor
方法,但它只能通过只有少数元素实现的
nsIDOMNSEditableElement
接口访问。有一个
关联编辑器
属性,但由于某种原因,它被标记为
[noscript]
contentEditable
是Gecko中一个相对较新的功能,看起来好像有人忘了让编辑器可以通过JavaScript访问——可能值得一提