CrossRider:弹出窗口中可以使用哪个库方法范围?

时间:2013-12-17 10:55:40

标签: crossrider

我已将数据保存在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处理程序中打开不占用整个屏幕空间的弹出窗口?< / p>

background.js中的某些内容:

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

谢谢(: - &gt;)

1 个答案:

答案 0 :(得分: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员工]