2016-04-25 49 views
3

現在のタブに関連付けられているプロセスIDをChrome拡張機能で取得しようとしています。Chrome拡張機能からChromeタブを取得する

私はそれをchrome.processes実験APIを介して取得することができました。

標準(非実験的)APIでタブpidを取得する方法はありますか?

答えて

5

あなたは本当のプロセスID(プロセスを識別するために、他のプログラムで使用することができ、すなわち1)を取得したい場合は、あなたの唯一のオプションですchrome.processesがありますが、このAPIはDev channelでしか利用できません(Chromeの安定版やベータ版では使用できません)。

プロセスを一意に識別する識別子が必要な場合は、chrome.webNavigation APIを使用して「タブのプロセスID」を取得できます。このIDはChrome内でのみ意味があります。詳細を掘り下げる前に、複数のタブが同じプロセスIDを共有でき、1つのタブに複数のプロセスを含めることができるとします(Site isolation projectが有効な場合)。

「タブ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" 
    ] 
} 
+0

おかげで、私はオペレーションシステムが必要クロムの外部で使用するためのPID。 – AK87

関連する問題