无法在XUL Firefox扩展中获取TinyMCE的实例
Cannot get instance of TinyMCE in XUL Firefox extension
我正试图在Firefox扩展的JavaScript中获得tinyMCE编辑器的实例。
当我在控制台中键入window.tinyMCE
时,它返回一个对象;但是,当试图在Firefox扩展中获得JavaScript中的tinyMCE编辑器实例时,我使用window.content.tinyMCE
并获得undefined
例如,我正在尝试查看带有Firefox扩展的页面上是否存在tinyMCE编辑器。这是我的代码:
if (window.content.tinyMCE) {
alert('its there!');
}
页面上存在TinyMCE编辑器,但不会提醒上述代码。当我执行alert(window.content.tinyMCE)
时,它会提醒undefined
。
在XUL中,Window.content
为主要内容窗口返回一个Window对象。https://developer.mozilla.org/en-US/docs/Web/API/Window/content
Window对象肯定在那里,因为当我在控制台中键入window.tinyMCE
时,它会返回tinyMCE对象。
有人知道我做错了什么吗?
最有可能的问题是扩展中的window
不是您期望的window
对象。
Firefox加载项通常在未定义全局window
和document
对象的范围内运行(是否定义它们取决于当前运行的代码部分的输入方式)。即使定义了它们,它们通常也不会定义为您期望的window
或document
(当前选项卡的window
/document
)。您可能需要为最近访问的窗口/选项卡获取对这两个对象的引用。
如果存在浏览器窗口(在某些情况下,您可能在不存在浏览器窗口的情况下运行,例如在启动时),您可以使用获得对最新浏览器window
、document
和gBrowser
的引用
if (window === null || typeof window !== "object") {
//If you do not already have a window reference, you need to obtain one:
// Add/remove a "/" to comment/un-comment the code appropriate for your add-on type.
/* Add-on SDK:
var window = require('sdk/window/utils').getMostRecentBrowserWindow();
//*/
//* Overlay and bootstrap (from almost any context/scope):
var window=Components.classes["@mozilla.org/appshell/window-mediator;1"]
.getService(Components.interfaces.nsIWindowMediator)
.getMostRecentWindow("navigator:browser");
//*/
}
if (typeof document === "undefined") {
//If there is no document defined, get it
var document = window.content.document;
}
if (typeof gBrowser === "undefined") {
//If there is no gBrowser defined, get it
var gBrowser = window.gBrowser;
}
如果您正在运行代码以响应事件(例如按钮command
事件),则可以使用获得当前window
var window = event.view
缺少全局window
和document
对象,或者让它们引用你所期望的以外的东西,这是许多人在编写Firefox插件时遇到的问题。
注意:如果您希望与多进程Firefox(Electrolysis,或e10s)本机兼容,那么访问当前文档的内容将更加复杂。有一些垫片可以让你的代码在一段时间内继续使用多进程Firefox,但它们最终可能会消失。
参考文献:
nsIWindowMediator
- 使用chrome代码中的窗口
- SDK:窗口/utils
- SDK:windows
这个答案的大部分是从我以前的答案中复制的,包括这个链接和这里
- 无法在XUL Firefox扩展中获取TinyMCE的实例
- TinyMCE获取数组数据
- Tinymce插件 - 如何从多个选项卡中获取数据
- 获取光标位置或光标在 TinyMCE 中的行数
- 如何通过元素选择器获取tinyMCE编辑器实例
- 从 Tinymce 获取 HTML 值
- 在tinyMCE 4中获取0值,当tinyMCE.activeEditor.queryCommandValue(“Fon
- 在TinyMCE中获取所选图像的源
- TinyMCE 无法获取未定义或空引用的属性“setContent”
- 用tinyMCE获取内容
- 事件回调未获取tinymce目标信息
- TinyMCE 4-获取插入符号位置
- 如何从tinymce列表框控件项内部获取属性值
- 如何在TinyMCE中获取所选内容的颜色
- 在TinyMCE 4.0中,如何通过id获取文本区域的内容
- Tinymce:如何获取所选节点的格式
- 从TinyMCE编辑器获取特定内容
- WP-JS-获取Tinymce编辑器的实例
- 如何在响应文件管理器插件与TinyMCE编辑器中的子文件夹中获取文件
- 获取 TinyMce (果园)中元素的 z 索引