0

現在、Firefox 拡張機能を作成しようとしていますが、エラーの原因がわかりません。

実際には、javascript コードでいくつかのフラッシュ関数にアクセスできるようにするために、xul コードにフラッシュ アプリケーションを埋め込みます。

この種のものは基本的な html ページで機能すると思っていましたが、xul コードからフラッシュ関数を使用しようとすると、「TypeError : [フラッシュ関数] は関数ではありません」というエラーに直面しています。

私はどういうわけか 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

フラッシュオブジェクトをアンラップする必要があると思います

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