0

データベースにデータを保存しましたappAPI.db.async。そして今、ポップアップページに表示したいと思います。ポップアップページにあるものは次のとおりです。

function crossriderMain($) {
    var db_keys = appAPI.db.async.getKeys();
    db_keys.forEach(
        function(key)
        {
            $("ul#id").append("<li>" + appAPI.db.async.get(key).url + "</li>");
        });
}

</script>

</head>
<body>

<ul id="history">History</ul>

</body>
</html>

意図した結果が得られません。私が知りたいのは、ポップアップ ページ内で何が利用できるかということです。

また、余談ですが、リソース ディレクトリの HTML ページからブラウザー タブを開くにはどうすればよいbrowserAction.onClickですか?

そのようなものbackground.js

appAPI.browserAction.onClick(
        function()
        {
            appAPI.tabs.create("/Resources/templates/history.html");
        }
    );

ありがとうございます (:->)

4

1 に答える 1

2

質問 1 への回答

appAPI.db.asyncは設計上非同期であるため、コールバックを使用してデータベースから値を受け取って使用する必要があります。さらに、最初にキーを取得してから関連データを取得する必要はありません。appAPI.db.async.getListを使用すると、ワンステップで簡単に目標を達成できます。

したがって、あなたの例を使用すると、コードは次のようになります。

function crossriderMain($) {
  appAPI.db.async.getList(function(arrayOfItems) {
    for (var i=0; i<arrayOfItems.length; i++) {
      $("ul#id").append("<li>" + arrayOfItems[i].value + "</li>");
    }
  });
}

質問 2 への回答

リソース ページを開く新しいタブを作成するには、appAPI.openURLメソッドを使用します。

したがって、あなたの例を使用すると、コードは次のようになります。

appAPI.ready(function($) {
  // When using a button, first set the icon!
  appAPI.browserAction.setResourceIcon('images/icon.png');
  appAPI.browserAction.onClick(function() {
    appAPI.openURL({
      resourcePath: "templates/history.html",
      where: "tab",
    });
  });
});

[免責事項:私はクロスライダーの従業員です]

于 2013-12-17T12:51:24.883 に答える