をポップアップ。
ユーザーエージェントはNetwork.setUserAgentOverride
コマンドを使用して変更することができます:
// Assume: tabId is the ID of the tab whose UA you want to change
// It can be obtained via several APIs, including but not limited to
// chrome.tabs, chrome.pageAction, chrome.browserAction, ...
// 1. Attach the debugger
var protocolVersion = '1.0';
chrome.debugger.attach({
tabId: tabId
}, protocolVersion, function() {
if (chrome.runtime.lastError) {
console.log(chrome.runtime.lastError.message);
return;
}
// 2. Debugger attached, now prepare for modifying the UA
chrome.debugger.sendCommand({
tabId: tabId
}, "Network.enable", {}, function(response) {
// Possible response: response.id/response.error
// 3. Change the User Agent string!
chrome.debugger.sendCommand({
tabId: tabId
}, "Network.setUserAgentOverride", {
userAgent: 'Whatever you want'
}, function(response) {
// Possible response: response.id/response.error
// 4. Now detach the debugger (this restores the UA string).
chrome.debugger.detach({tabId: tabId});
});
});
});
サポートされているプロトコルおよびコマンドの公式ドキュメントがhereを見つけることができます。執筆時点では、Deviceメトリックを変更するためのドキュメントはありません。
私は見て:しかし、クロムのソースコードに掘った後、私は、現在知られている全てのコマンドを定義したファイルを発見しました定義のリストを通して、私はPage.setDeviceMetricsOverride
を見つける。このフレーズは、我々の期待と一致しているようだ、それでは、それを使用する方法を見つけるために、さらに検索してみましょう:
これは"chromium/src/out/Release/obj/gen/devtools/DevTools.js"(数千行)が得られます。どこかに定義された(美化された)線があります:
InspectorBackend.registerCommand("Page.setDeviceMetricsOverride", [{
"name": "width",
"type": "number",
"optional": false
}, {
"name": "height",
"type": "number",
"optional": false
}, {
"name": "fontScaleFactor",
"type": "number",
"optional": false
}, {
"name": "fitWindow",
"type": "boolean",
"optional": false
}], []);
これを読む方法?
chrome.debugger.sendCommand({
tabId: tabId
}, "Page.setDeviceMetricsOverride",{
width: 1000,
height: 1000,
fontScaleFactor: 1,
fitWindow: false
}, function(response) {
// ...
});
これはChrome 25でプロトコルバージョン1.0を使用してこれをテストしています。デバッグ中のタブのサイズが変更されています。わーい!
うわー!これは、私が今まで見ていた、あるいは考えていた最も完全で思いやりのある回答の一つです。ありがとう! – JJS
すばらしい答え。しかし、私が "debugger.attach中にエラーが発生しました:別のデバッガがすでにID付きのタブに接続されています"または "debugger.sendCommand中のエラー:デバッガがID:43のタブに接続されていません"というメッセージが表示されます。あなたのコードと同様の問題。 – Krasimir
@KrasimirStefanovTsonev現在のところ、デバッガのインスタンスは1つしか接続できません(ドキュメントには、複数のデバッガを許可することが究極の願いです)。デバッグしているタブに開発ツール(F12)、既存のデバッガ、またはリモートデバッガを開いている可能性があります。特定のタブの開発者用ツールを閉じると、作業が開始されます。 –