从Chrome扩展程序中获取Chrome标签页

时间:2016-04-25 07:24:51

标签: google-chrome google-chrome-extension pid

我正在尝试通过chrome扩展程序获取与当前标签关联的进程ID。

我确实设法通过chrome.processes实验API获得了它。

有什么方法可以使用标准(非实验性)API获取标签页吗?

2 个答案:

答案 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

之外别无他法
相关问题