我正在使用网页浏览开发Chrome应用。用于webview的页面也可以在常规浏览器中运行。如果在webview中,页面会向主App发送消息,但显然他们需要先从应用程序收到消息,以便知道将消息发送到何处。
没问题 - 主应用程序在看到'loadstop'事件后立即发送消息,该事件告诉页面将消息发送到哪里。如果页面不在webview中,那么它永远不会收到消息。
问题是,我需要知道页面何时应该停止等待消息并假设它不在webview中。
'loadstop'何时发生,相对于页面中的事件,如jQuery的.ready或.load?有没有办法陷阱或触发在'loadstop'之后发生的事件可能会在主应用程序中看到,以及webview的JavaScript发送和接收的消息。
答案 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。