Chrome 没有与用户交互的扩展
Chrome extension with no interaction with user
我正在监听一些表单事件(鼠标双点击一些元素),引发一个事件并在我的内容脚本中捕获该事件。我不需要用户与我的扩展进行任何直接交互。
这是我的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 添加到清单并设置一个弹出页面,那么它就可以工作,但我不需要进行任何交互带有扩展名。
感谢您的帮助。
Why alert is not called?
因为那个清单 popup.js
没有被引用 任何地方 ,并且永远不会被加载。您的扩展程序可能有很多未使用的文件,Chrome 不会猜出文件放在哪里。
浏览器/页面操作当然是 UI 元素。如果您不想要 UI(或想要 "always there" 的持久脚本),您需要 background page (or better yet an event page,但请确保您理解其中的区别。
总而言之,看看Architecture Overview。
我修好了。只需在清单中添加一个背景页面:
"background": {
"persistent": false,
"scripts": ["bg.js"]
},
我正在监听一些表单事件(鼠标双点击一些元素),引发一个事件并在我的内容脚本中捕获该事件。我不需要用户与我的扩展进行任何直接交互。 这是我的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 添加到清单并设置一个弹出页面,那么它就可以工作,但我不需要进行任何交互带有扩展名。
感谢您的帮助。
Why alert is not called?
因为那个清单 popup.js
没有被引用 任何地方 ,并且永远不会被加载。您的扩展程序可能有很多未使用的文件,Chrome 不会猜出文件放在哪里。
浏览器/页面操作当然是 UI 元素。如果您不想要 UI(或想要 "always there" 的持久脚本),您需要 background page (or better yet an event page,但请确保您理解其中的区别。
总而言之,看看Architecture Overview。
我修好了。只需在清单中添加一个背景页面:
"background": {
"persistent": false,
"scripts": ["bg.js"]
},