我正在尝试通过chrome扩展程序获取与当前标签关联的进程ID。
我确实设法通过chrome.processes
实验API获得了它。
有什么方法可以使用标准(非实验性)API获取标签页吗?
答案 0 :(得分:5)
如果您想获得真实的进程ID(即其他程序可用于识别进程的ID),那么您唯一的选择是chrome.processes
,但此API仅适用于{{3} (所以不适用于Chrome稳定版,也不适用于Beta版)。
如果您只需要一个标识符来唯一标识进程,那么您可以获得选项卡的"进程ID"通过Dev channel API。此ID仅在Chrome中有意义。在深入研究细节之前,让我们首先说多个标签可以共享相同的进程ID,并且一个标签可以包含多个进程(启用chrome.webNavigation
时)。
因此,通过" tab PID",我假设您指的是托管顶级框架的进程。然后,您可以检索框架列表并提取选项卡的进程ID,如下所示:
background.js
'use strict';
chrome.browserAction.onClicked.addListener(function(tab) {
chrome.webNavigation.getAllFrames({
tabId: tab.id,
}, function(details) {
if (chrome.runtime.lastError) {
alert('Error: ' + chrome.runtime.lastError.message);
return;
}
for (var i = 0; i < details.length; ++i) {
var frame = details[i];
// The top-level frame has frame ID 0.
if (frame.frameId === 0) {
alert('Tab info:\n' +
'PID: ' + frame.processId + '\n' +
'URL: ' + frame.url);
return; // There is only one frame with ID 0.
}
}
alert('The top-level frame was not found!');
});
});
的manifest.json
{
"name": "Show tab PID",
"version": "1",
"manifest_version": 2,
"background": {
"scripts": ["background.js"],
"persistent": false
},
"browser_action": {
"default_title": "Show tab PID"
},
"permissions": [
"webNavigation"
]
}
答案 1 :(得分:4)
不,除了实验性API chrome.processes
之外别无他法