无法通过javascript和XUL访问flash功能

时间:2013-01-13 23:37:22

标签: javascript flash embed xul typeerror

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

Praticaly,我在我的xul代码中嵌入了一个flash应用程序,以便能够访问javascript代码中的一些flash函数。

认为这种东西适用于基本的html页面,当我尝试使用xul代码中的flash函数时,我面临“TypeError:[flash 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+"; ";
        }
        // ...
    }
};

1 个答案:

答案 0 :(得分:0)

我猜你必须打开flash对象

var flashObj = XPCNativeWrapper.unwrap(document.getElementById("extension-fontlist"));