1

そのため、Firefox の次のアドオンに取り組んでいますが、ContextMenus のドキュメントを読んでいると、onMessage イベントが呼び出されていないようです。コードは次のとおりです。

exports.main = function(){
    var addonTab = require('addon-page');
    var data = require('self').data;
    var tabs = require('tabs');
    var cm = require("context-menu");

    cm.Item({
        label: "Tag This Image",
        context: cm.URLContext("*"),
        contextSelector: "img",
        contentScript: 
            'self.on("click", function(node, data){' +
            '   self.postMessage(node);' +
            '});',

        // nothing works...
        onMessage: function(node){
            openImageEditor(node.src);
            alert("Message? It worked? No way!"); 
            onTagImage(node);
        }
    });

    var onTagImage = function(node){
        alert("Image tagged!"); 
    };

    tabs.open({url: data.url('index.html'), isPinned:true});
};

それで、エラーのコンソールを見てみますが、これはおそらく私が今まで見た中で最悪の種類のエラー形式です...

タイムスタンプ: 14/07/2012 3:21:44 エラー: 例外が発生しました。トレースバック (最後の最後の呼び出し): ファイル "resource://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/addon-kit/lib/context-menu.js"、行 1310、CMP_handleEvent 内。handleClick(event.target); CMP のファイル「resource://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/addon-kit/lib/context-menu.js」、1339 行_handleClick this.browserWin.fireClick(topLevelItem, popupNode, item.data); ファイル「resource://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/addon-kit/lib/context-menu.js」、1162行目、BW_fireClick worker.fireClick(popupNode, clickedItemData); ファイル「resource://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/addon-kit/lib/context-menu.js」、663 行目、CMW_fireClick this._contentWorker.emitSync("click", popupNode, clickedItemData); ファイル「resource://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/api-utils/lib/content/worker.js」の 71 行目、emitSync で this._emitToContent(Array.slice(arguments)) を返します。ファイル「resource://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/api-utils/lib/content/content-worker.js」、96 行目、onChromeEvent return emit.apply(null, args); ファイル「resource://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/api-utils/lib/content/content-worker.js」、45 行目、onEvent results.push(callback.apply(null, args)); ファイル "javascript:self.on("クリック", 関数(ノード, データ){
self.postMessage(node);});」、1 行目、null ファイル「resource://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/api-utils/lib/content/content-worker.js」、81 行目onEvent let str = JSON.stringify(args, replacer); [Exception... "コンポーネントがエラー コードを返しました: 0x80040111 (NS_ERROR_NOT_AVAILABLE) [nsIImageLoadingContent.loadingEnabled]" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)" location: "JS フレーム :: リソース://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/api-utils/lib/cuddlefish.js -> リソース://jid0-dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/api-utils/lib/sandbox.js -> リソース://jid0 -dxglsws2k0cubycbcn7cw5tcyqk-at-jetpack/api-utils/lib/content/content-worker.js :: onEvent :: 行 81" データ: いいえ]

これが実際の行ですが、これは私には意味がありません:

ファイル "javascript:self.on("click", function(node, data){self.postMessage(node);});"、1 行目、null

質問: このエラーは何を意味していますか、または上記の行の正確な問題は何ですか?

4

1 に答える 1

2

あなたのコンテキスト メニューの実装は、いくつかの点で少し厄介でした。この修正された例を参照してください。

https://builder.addons.mozilla.org/addon/1065630/latest/

  1. コンテンツ スクリプトからの postMessage 呼び出しは html ノードを送信できず、JSON データのみを送信できます。

  2. main.js または ./lib/ からロードされた他のモジュールでアラートを使用しないでください - アラートはここでは定義されていません。代わりに console.log を使用してください。

  3. 必要なコンテキストはコンテキストです: cm.SelectorContext('img')

于 2012-07-14T17:28:39.313 に答える