Javascript 如何通过angularJS将数据从主窗口传递到chrome应用程序中新创建的窗口?

Javascript 如何通过angularJS将数据从主窗口传递到chrome应用程序中新创建的窗口?,javascript,windows,angularjs,google-chrome,google-chrome-app,Javascript,Windows,Angularjs,Google Chrome,Google Chrome App,我目前正在创建一个chrome应用程序,只是为了好玩和学习,然后我遇到了一个问题。在主窗口中,我创建了一个窗口,该窗口将显示您与您单击的名称的对话,但我不知道如何将数据传递到该新窗口。可能吗?如果是这样,怎么办?这是我的密码 chrome.app.window.create('views/templates/chatWindow.html', { 'bounds': { 'width': window.screen.availWidth,

我目前正在创建一个chrome应用程序,只是为了好玩和学习,然后我遇到了一个问题。在主窗口中,我创建了一个窗口,该窗口将显示您与您单击的名称的对话,但我不知道如何将数据传递到该新窗口。可能吗?如果是这样,怎么办?这是我的密码

    chrome.app.window.create('views/templates/chatWindow.html', {
        'bounds': {
            'width': window.screen.availWidth,
            'height': window.screen.availWidth
        },
        state: 'maximized',
        resizable: false
    });
请注意,我使用的是AngularJS,我在windows机器上工作


另外,我还有一个问题。这个新窗口有自己的控制器,那么,我如何获取传递的数据呢?

选项1

的回调函数返回给您对象。 此对象具有contentWindow属性,该属性是新创建窗口中的
窗口
对象。有了此引用,您可以在
document.body
对象上触发自定义事件,并在控制器中处理它

选项2

使用angular和URL的哈希传递数据。例如,您可以执行以下操作:

chrome.app.window.create('views/templates/chatWindow.html#/client/1234' //...

然后使用路由器和同一应用程序的代码来处理查看和操作。

派对有点晚,但我希望这个答案能帮助其他人回答这个问题:

如果您已使用
chrome.windows.create
()创建了子窗口,则可以使用chrome的消息传递API将消息传递到此新创建的子窗口:

在您的家长(背景脚本)中,您可以执行以下操作:

chrome.runtime.sendmessage({
  type: "a_message_type",
  foo: "bar"
});
<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>
在子窗口的HTML中,您会看到一些如下代码:

chrome.runtime.sendmessage({
  type: "a_message_type",
  foo: "bar"
});
<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>

您可以尝试上的“在windows之间传递数据”部分。希望这有帮助。:)很抱歉我反应太晚了。我尝试了解决方案1,因为我没有使用ngRoute。我已经在chrome应用程序的文档中看到了,但我不明白如何使用它,然后你给了我如何使用的想法。谢谢,实际上你根本不需要使用ngRoute。在应用程序引导过程中,您可以检查
$window.location.hash
属性,并根据参数决定要运行应用程序的哪个部分。