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",
    });
  });
});

[免责声明:我是 Crossrider 的员工]

于 2013-12-17T12:51:24.883 回答