0

私はいくつかのフォーム イベント (いくつかの要素をクリックするマウス dbl) をリッスンし、イベントを発生させ、コンテンツ スクリプトでそのイベントをキャッチします。ユーザーが拡張機能を直接操作する必要はありません。ここに私のpage.js(コンテンツスクリプト)があります:

chrome.runtime.sendMessage( { method: e.data.methodName, cid: e.data.cbId, jparams: e.data.jsonParams, objectVersion: e.data.objectVersion, objectFile: e.data.objectFile }, function( response ) {
    if( !response ){
        //errCallback();
    }
} );

現れる:

var host_name = "nativeclientapi";
var messageData = null;
var port = null;
// Listen for messages that come from the content script.
chrome.runtime.onMessage.addListener(
  function( request, sender, sendResponse ) {
    if( request) {
        messageData = request;
        alert ('hello');
        sendResponse( { res: 'done!' } );
    }
  } );

マニフェスト:

{
  "name": "MyChromeExt.Operarations",
  "version": "1.0",
  "manifest_version": 2,
  "description": "This extension calls a Native API which that API calls some operations.",
  "icons": {
    "128": "icon.png"
  },
  "permissions": [
    "nativeMessaging", "activeTab"
  ],
  "content_scripts" : [{"matches": ["http://localhost/*","https://localhost/*"], "js": ["page.js"]}]
}

アラートが呼び出されないのはなぜですか? マニフェストにbrowser_actionを追加してポップアップ ページを設定すると機能しますが、拡張機能を操作する必要はありません。

ご協力いただきありがとうございます。

4

2 に答える 2

1

アラートが呼び出されないのはなぜですか?

そのマニフェストはどこpopup.jsにも参照されておらず、ロードされないためです。拡張機能には未使用のファイルが多数含まれている可能性があり、Chrome は何がどこにあるのかを推測できません。

ブラウザ/ページ アクションは、もちろん UI 要素です。UI が必要ない場合 (または「常にそこにある」永続的なスクリプトが必要な場合) は、バックグラウンド ページ(または、できればイベント ページが必要ですが、違いを理解していることを確認してください) が必要です。

全体として、アーキテクチャの概要をご覧ください。

于 2015-07-01T09:24:04.747 に答える
0

それを私が直した。背景ページをマニフェストに追加するだけです。

  "background": {
    "persistent": false,
    "scripts": ["bg.js"]
  },
于 2015-07-01T09:55:34.700 に答える