我已将数据保存在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;)
答案 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员工]