0

我正在收听一些表单事件(鼠标单击某些元素),引发一个事件并在我的内容脚本中捕获该事件。我不需要用户与我的扩展进行任何直接交互。这是我的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 回答