我正在创建Chrome应用,"不是扩展程序。" 人们可以接收和发送消息。如果我收到消息,我收到通知和mp3声音。如果应用程序窗口打开,我知道如何聚焦窗口使其显示在前面。但如果窗户关闭我收到通知,声音ect(来自background.js),我创建了一个窗口打开,当我收到此通知,但我不能再与background.js脚本交互。就像chrome.runtime.sendMessage在我的应用程序窗口完全打开之前很快就会激活。
chrome.runtime.sendMessage({
action: "Messageincoming"
});
当邮件传入时,在我的应用程序中,会出现一个弹出窗口,告诉用户邮件是传入的(从background.js调用),用户可以通过单击按钮接受它。但是当应用程序窗口关闭时,我应该打开一个新窗口,然后用chrome.app.window.create('myapp.html', {
就像我说的那样,chrome.runtime.sendMessage似乎在窗口完全打开之前就开始了。我无法触发此弹出窗口以使用户接受,我不确定如果我这样做,该按钮将起作用。
有没有办法等到窗户完全打开?或使用任何其他方法。 我阅读了所有的Chrome应用程序文档,但我一无所获。我在myapp.html页面中有一个js脚本,用于控制点击和UI中的所有内容。 controler.js
答案 0 :(得分:1)
有多种方法可以做到这一点,所以这取决于你正在寻找什么。可能最简单的答案是通过回调函数,您可以将其传递给chrome.app.window.create,如图here所示。这将允许您传入一个在页面加载期间执行的函数。
另一种方法是接收您所描述的消息。你也可以这样做,但是你需要在你创建的新页面中设置一个消息处理程序,并且需要在页面加载时立即设置它,否则你将错过你所描述的消息,如你所描述的那样。这里有更多关于消息传递的信息,底部有一些例子。 https://developer.chrome.com/extensions/messaging
更精细的方法是将新窗口挂钩到OnFullscreened或其他处理程序。在该处理程序中,向后台脚本发送请求,请求您需要的任何消息数据。在后台脚本中,有一个消息处理程序,它返回您想要的任何存储消息。