0

我目前正在尝试制作一个 Firefox 扩展,但我无法弄清楚我的错误是什么。

实际上,我在我的 xul 代码中嵌入了一个 flash 应用程序,以便访问 javascript 代码中的一些 flash 功能。

认为这种东西适用于基本的 html 页面,当我尝试使用我的 xul 代码中的 flash 函数时,我遇到了“TypeError:[flash function] is not a function”错误。

我不知何故是 xul 编码的初学者:有人能指出我的错误吗,我将不胜感激。

这是我的 xul 文件:

<overlay id="extension-overlay" xmlns:html="http://www.w3.org/1999/xhtml" xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <script src="overlay.js"/>
    <window id="main-window">
        <toolbaritem id="extension-fontlist_container" persist="width">
            <html:embed hidden="true" wmode="transparent" id="extension-fontlist" height="1px" width="1px" menu="false" src="FontList.swf" allowscriptaccess='always' align='center' flashvars="" type="application/x-shockwave-flash" />
        </toolbaritem>

        <statusbar id="status-bar">
            <statusbarpanel id="my-panel" label="&gathering;" onload="Extension.onMenuItemCommand(event);"/>
        </statusbar>
    </window>
</overlay>

这是我的javascript代码:

var Extension = {
    onMenuItemCommand: function() {
        var flashObj = document.getElementById("extension-fontlist");
        var fontArr=flashObj.getDeviceFonts();
        var font="";
        for (var key in fontArr){
            var fontName = fontArr[key];
            fontName = fontName.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
            font+=fontName+"; ";
        }
        // ...
    }
};
4

1 回答 1

0

我想你必须打开 flash 对象

var flashObj = XPCNativeWrapper.unwrap(document.getElementById("extension-fontlist"));
于 2013-01-14T19:17:28.920 回答