Javascript 获取内容脚本中当前选项卡id的方法-chrome扩展
我正在尝试获取内容脚本中的当前选项卡id。但它总是失败。我不确定,我在做什么 以下是来自其他主题的一些解决方案,但这些解决方案在我的扩展中不起作用: 代码1-content.jsJavascript 获取内容脚本中当前选项卡id的方法-chrome扩展,javascript,google-chrome-extension,Javascript,Google Chrome Extension,我正在尝试获取内容脚本中的当前选项卡id。但它总是失败。我不确定,我在做什么 以下是来自其他主题的一些解决方案,但这些解决方案在我的扩展中不起作用: 代码1-content.js chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) { alert("sent from tab.id=", sender.tab.id); }); chrome.extension.sendRequest
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
alert("sent from tab.id=", sender.tab.id);
});
chrome.extension.sendRequest({
action: "WhatYouWant"
});
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
if (request.action) {
alert('The response is : ' + request.action);
}
});
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
if (request.action) {
// Make what you want
chrome.tabs.getSelected(null, function (tabs) {
chrome.tabs.sendRequest(tabs.id, {
action: "response"
});
});
}
});
代码2-content.js
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
alert("sent from tab.id=", sender.tab.id);
});
chrome.extension.sendRequest({
action: "WhatYouWant"
});
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
if (request.action) {
alert('The response is : ' + request.action);
}
});
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
if (request.action) {
// Make what you want
chrome.tabs.getSelected(null, function (tabs) {
chrome.tabs.sendRequest(tabs.id, {
action: "response"
});
});
}
});
background.js
chrome.runtime.onMessage.addListener(function (request, sender, sendResponse) {
alert("sent from tab.id=", sender.tab.id);
});
chrome.extension.sendRequest({
action: "WhatYouWant"
});
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
if (request.action) {
alert('The response is : ' + request.action);
}
});
chrome.extension.onRequest.addListener(function (request, sender, sendResponse) {
if (request.action) {
// Make what you want
chrome.tabs.getSelected(null, function (tabs) {
chrome.tabs.sendRequest(tabs.id, {
action: "response"
});
});
}
});
manifest.json
...
"background": {
"scripts": ["background.js"],
"persistent": true
},
"content_scripts": [{
"all_frames": true,
"js": ["content.js"],
"matches": ["<all_urls>"],
"run_at": "document_end"
}],
"web_accessible_resources": [
"content.js"
],
...
。。。
“背景”:{
“脚本”:[“background.js”],
“持久”:正确
},
“内容脚本”:[{
“所有框架”:正确,
“js”:[“content.js”],
“匹配项”:[“”],
“运行时间”:“文档结束”
}],
“网络可访问资源”:[
“content.js”
],
...
注意:这不是重复的主题,其他问题中的解决方案不适用于我。chrome.tabs.query()
函数返回tabs数组
请参阅本文件:
当我尝试tabs.query()
函数时,回调函数返回所有当前的tabs数组
chrome.tabs.query( {}, function(cbResult){
console.log(cbResult);});
使用google的文档和上面的回调返回,您可以找到使用first query()参数的正确选项卡
如果第一个参数为Null,则查询函数返回数组中的所有制表符。
可以使用第一个参数缩小候选选项卡的范围
分机消息不会将消息传递到发送消息的页面。获取选项卡id的常用方法是向您的后台/事件页面发送消息,然后该页面用sender.tab.id进行响应。您还可以添加一个iframe,指向通过web可访问资源公开的扩展页面-iframe可以使用chrome.tabs.getCurrent获得自己的选项卡,然后,它可以通过DOM消息事件(即window.parent.postMessage)发送到您的内容脚本。下面是根据我链接的示例构建的完整工作扩展:我想您的尝试方式有问题。安装扩展,打开或重新加载网页(如www.google.com),检查控制台。您还可以通过设置断点和检查变量,使用devtool调试代码。这是我在没有TeamViewer会话或类似远程访问的情况下所能提供的最大帮助,但StackOverflow不是这样工作的。内容脚本中无法访问
chrome.tabs
api: