0

debugtools 要素パネルを変更して、独自のカスタム データを追加しようとしています。そのデータは、検査中のページの Web ページ DOM とは関係ありません。そこに自分のモノを置きたい。

だから、私は次のことをしました:

function createDebug(token)

    {
        console.log("createDebug() " + token);
        chrome.devtools.panels.elements.createSidebarPane(
            "Token Details: " + token,
            function(sidebar) {
              function updateElementProperties() {
                console.log("updateElementProperties()");
                var data = {};
                data.token = token;
                var s = JSON.stringify(data);
                console.log(s);
                sidebar.setObject(s, "DATA");
              }
              console.log("createSidebarPane() callback");
              updateElementProperties();
        });
    }

devtools を開くと、[Token Details] パネルの [DATA] サブ項目に設定したオブジェクトが表示されます。

私は何を間違っていますか?

4

1 に答える 1

6

ドキュメントは混乱していると思いますが、extensionSidebarPane.setObject(string jsonObject, string rootTitle, function callback)のようなものでなければなりませんextensionSidebarPane.setObject( jsonObject, string rootTitle, function callback)

このため、 JSON.stringify()を使用して明示的に文字列に変換しています

var data = {};
data.token = token;
var s = JSON.stringify(data);
console.log(s);

私は最後の行を削除し、var s = JSON.stringify(data); console.log(s);それは機能しています。

ここに画像の説明を入力してください

デモンストレーション

あなたの関数を使って、私はそれを次のコードで動作させました。

マニフェスト.json

devtools.htmlマニフェストに登録

{
  "name": "Dev Tools",
  "description":"This demonstrates dev tools API",
  "version": "1.0",
  "manifest_version":2,
  "devtools_page": "devtools.html"

}

devtools.html

簡単なdevtools.html使用devtools.js

<html>
<head>
<script src="devtools.js"></script>
</head>
<body>
</body>
</html>

devtools.js

明示的な文字列のトークン化を排除しました。

function createDebug(token){
    console.log("createDebug() " + token);
        chrome.devtools.panels.elements.createSidebarPane(
            "Token Details: " + token,
            function(sidebar) {
              function updateElementProperties() {
                console.log("updateElementProperties()");
                var data = {};
                data.token = token;
                //Commenting out explicit string conversion
                //var s = JSON.stringify(data);
                //console.log(s);
                sidebar.setObject(data, "DATA");
              }
              console.log("createSidebarPane() callback");
              updateElementProperties();
    });

}

document.addEventListener("DOMContentLoaded",function (){
    createDebug("Trivial Token one");
});

さらに情報が必要な場合はお知らせください

于 2012-12-07T07:10:25.883 に答える