Sri*_*agi 4 javascript google-chrome-extension
我已经在用户访问的每个页面中注入了代码.但我希望在用户单击由同一扩展名创建的contextMenu时触发此脚本.简而言之,我必须在background.html和内容脚本之间传递消息,但触发器应该在单击上下文菜单时发生.
这是我尝试过的
//background.html
function subFunction(info,tab){
var x = info.selectionText;
alert("x");//This is working fine
chrome.tabs.getSelected(null, function(tab) {
chrome.extension.sendRequest({"variable1":x,"type":"y"});
});
}
chrome.contextMenus.create({"title": "Submit", "onclick": subFunction,"contexts":['selection']});
Run Code Online (Sandbox Code Playgroud)
//myscript.js
chrome.extension.onRequest.addListener(
function(request, sender, sendResponse) {
alert("Seems like I am in");
if(request.type == 'y'){
alert("This is" + request.x);
}
});
Run Code Online (Sandbox Code Playgroud)
有谁能告诉我哪里出了问题.据我所知,tabs.getSelected与tab.id作为第一个参数是错误的.但由于点击的来源是上下文菜单,可能是它没有读取tab.id或者它不理解我正在处理哪个选项卡.
首先是chrome.extension.sendRequest
和之间的错误chrome.tabs.sendRequest
.您的方法签名不正确sendRequest
,它缺少一个参数(这不是可选的).第一个参数是"扩展ID",在这种情况下它应该为null.
如果要将消息发送到其他扩展页面,请使用chrome.extension.sendRequest
.如果要向内容脚本发送消息,则需要使用chrome.tabs.sendRequest
.
在这种情况下,你需要使用,chrome.tabs.sendRequest
因为你的onRequest
听众住在那里.您仍然需要第一个参数,即您的标签ID.
chrome.tabs.getSelected(null, function(tab) {
chrome.tabs.sendRequest(tab.id, {"variable1":x,"type":"y"});
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1940 次 |
最近记录: |