Chrome App消息传递和'loadstop'与.load()计时

时间:2014-07-02 15:11:00

标签: javascript webview google-chrome-app

我正在使用网页浏览开发Chrome应用。用于webview的页面也可以在常规浏览器中运行。如果在webview中,页面会向主App发送消息,但显然他们需要先从应用程序收到消息,以便知道将消息发送到何处。

没问题 - 主应用程序在看到'loadstop'事件后立即发送消息,该事件告诉页面将消息发送到哪里。如果页面不在webview中,那么它永远不会收到消息。

问题是,我需要知道页面何时应该停止等待消息并假设它不在webview中。

'loadstop'何时发生,相对于页面中的事件,如jQuery的.ready或.load?有没有办法陷阱或触发在'loadstop'之后发生的事件可能会在主应用程序中看到,以及webview的JavaScript发送和接收的消息。

1 个答案:

答案 0 :(得分:1)

  

何时加载'发生,相对于页面中的事件,如jQuery' s .ready或.load?

根据loadstop事件的文档:

  

当访客页面(包括其所有子帧)中的所有帧级负载都已完成时触发。这包括当前文档中的导航以及子帧文档级加载,包括异步资源加载。

这表明它更类似于jQuery的.ready(),它在加载DOM树之后但在等待资产(.css,.js)下载之前执行。

密切关注该文档页面;自两周前以来,它已经很多改进了。


  

是否有办法陷阱或触发保证在“加载停止”之后发生的事件。可以在主应用程序中看到,以及webview的JavaScript发送和接收的消息?

您的 manifest.json 声明您的 my-app-main.js 后台脚本(以及您的webview权限),它会启动您的 my-webview-wrapper。 html ,其中包含您的<webview>标记,并且还内联了一些javascript(或来源 my-webview-wrapper.js 文件),它通过{{将事件监听器分配给您的网页视图1}}这样的功能:

onload

onload = function() { webview = document.getElementById("the-id-attribute-of-my-webview"); webview.addEventListener("<EVENT>", function() { // the cool stuff you want to do } } 可以是我链接的文档(包括<EVENT>)中列出的任何webview DOM事件。您的主要应用程序不应该非常关心任何这种情况。 (它是异步的!它是javascript!它的神奇!)

如果您仍然感到困惑,只需在GitHub上浏览Google的webview sample