Chrome应用程序消息传递和'Vs. load()计时
Chrome App messaging and 'loadstop' vs. .load() timing
我正在开发一个Chrome应用程序与webviews。用于webview的页面也可以在普通浏览器中运行。如果在webview中,页面发送消息到主应用程序,但显然他们需要首先从应用程序获得消息,以便知道将消息发送到哪里。
没问题-主应用程序发送一个消息,只要它看到一个'loadstop'事件,告诉页面发送消息到哪里。如果一个页面不在webview中,那么它永远不会得到这个消息。
问题是,我需要知道当一个页面应该停止等待消息,并假设它不是在一个webview。
什么时候'loadstop'发生,相对于页面中的事件,如jQuery的。ready或。load?是否有一种方法来捕获或触发一个事件,保证发生在'loadstop'之后,可能会在主应用程序中看到,并由webview的JavaScript发送和接收消息。
什么时候'loadstop'发生,相对于页面中的事件,如jQuery的。ready或。load?
根据loadstop事件的文档:
当来宾页面的所有帧级加载(包括其所有子帧)完成时触发。这包括当前文档内的导航以及子框架文档级加载,但是不包含异步资源加载。
这表明它更类似于jQuery的.ready(),它在加载DOM树之后执行,但在等待资产(.css, .js)下载之前。
关注文档页;自两周前以来,它已经有了很大的改善。
是否有一种方法来捕获或触发一个事件保证发生后'loadstop'可能在主应用程序中看到,并由webview的JavaScript发送和接收的消息?
清单。json声明你的my-app-main.js后台脚本(和你的webview权限),它启动你的my-webview-wrapper.html,其中包括你的<webview>
标签,还内联一些javascript(或来源一个my-webview-wrapper.js文件),通过onload
函数为你的webview分配事件监听器,如下:
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事件(包括loadstop
)。你的主应用不应该关心这些发生的事情。(异步!javascript !它的魔法!)
如果你仍然感到困惑,就在GitHub上浏览一下Google的webview示例。
- 正在寻找比$(document).ready慢的$(window).load的替代方案
- setInteval vs setTimeout
- $(this).prop('property') vs. this.property
- Js.erb VS按钮标记-不'不起作用.为什么?
- reactjs this.refs vs document.getElementById
- jQuery点击ON现在使用.load触发关闭
- .load()函数赢得't加载javascript
- 使用jquery.load('pageName')方法时,未从应用程序缓存加载Html页
- 使用.load()后在Lightbox中插入谷歌地图
- Performance: NaCl vs Emscripten
- 文本表示法VS.构造函数,用于在JavaScript中创建对象
- Advantages to DOMParser vs template & innerHTML
- JavaScript-===vs===运算符性能
- Lazy Load vs Combine/Minify vs CDN Javascript (AngularJS)
- jquery load vs ajax for form post submission
- 美元(窗口).load vs. window.addEventListener
- 使用 document.ready vs window.load 来加载延迟的内容
- ExtJs Store.Load() vs Model.Load()
- Chrome应用程序消息传递和'Vs. load()计时
- jQuery - iframe inside iframe - ready vs load