我目前正在创建一个Chrome应用程序,只是为了娱乐和学习,然后我遇到了一个问题。在主窗口中,我创建了一个窗口,它将使用您单击的名称显示您的对话,但我不知道如何将数据传递到该新窗口。可能吗?如果那么,怎么样?这是我的代码。
chrome.app.window.create('views/templates/chatWindow.html', {
'bounds': {
'width': window.screen.availWidth,
'height': window.screen.availWidth
},
state: 'maximized',
resizable: false
});
请注意我使用的是AngularJS,我正在使用Windows机器。
另外,我有另一个问题。那个新窗口有自己的控制器,那么,我该如何获得传递的数据呢?
答案 0 :(得分:2)
选项1
chrome.app.window.create的回调函数会为您提供AppWindow个对象。
此对象具有contentWindow属性,该属性是新创建的窗口中的window
对象。有了这个引用,您可以在document.body
对象上触发自定义事件并在控制器中处理它。
选项2
使用angular的NgRoute和URL的哈希来传递数据。例如,您可以执行以下操作:
chrome.app.window.create('views/templates/chatWindow.html#/client/1234' //...
然后使用路由器和相同的应用程序代码来处理视图和操作。
答案 1 :(得分:0)
聚会晚了一点,但是我希望这个答案可以帮助其他人解决这个问题:
如果您使用chrome.windows.create
(https://developer.chrome.com/extensions/windows#method-create)创建了子窗口,则可以使用Chrome的消息传递API将消息传递到此新创建的子窗口:
在您的父母(后台脚本)中,您可以执行以下操作:
chrome.runtime.sendmessage({
type: "a_message_type",
foo: "bar"
});
在子窗口的HTML内,您将具有一些类似于以下内容的代码:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Child Window</title>
<script src="jquery-3.5.1.min.js"></script>
<script src="child.js"></script>
</head>
<body>
<p> I'm the child window </p>
</body>
</html>
在child.js内部,您可以收听来自父级的消息:
$(function () {
chrome.runtime.onMessage.addListener(function (request) {
if (request.type === "a_message_type") {
console.log(request.foo); // request has the payload from the parent window
}
});
});