gpt4 book ai didi

google-chrome - chrome应用程序webview事件定义和顺序

转载 作者:行者123 更新时间:2023-12-04 23:50:17 26 4
gpt4 key购买 nike

我正在开发一个包含webview标签以显示网络内容的Chrome应用。

我在理解contentloadloadcommitloadstop事件在webview中加载页面的过程中何时触发时遇到了麻烦。

1)当我可以期望发生这些事件时,是否可以有人描述(比文档更好的细节和上下文)?
2)另外,如果/如果我更改了Webview的src(url),会发生什么?事件是否会与在Webview的初始加载时(或根本没有)触发事件不同,或者是否与首页加载相同?

https://developer.chrome.com/apps/tags/webview

最佳答案

更新:每当已提交的帧级负载的数量从非零转换为零时,都会发生loadstop事件。实际上,这通常是每loadcommit一个。有关详细信息,请参见更新后的响应。

您在Web视图中导航(例如,单击链接)并设置loadcommit属性时观察到的contentloadloadstopwebview.src事件大致相同,尽管两者都取决于新URL是否引用了当前加载的文档。这些事件取决于浏览器导航和真实文档加载之间的差异。请注意,在您遇到的问题中,“浏览器”是Web视图。

摘要


顶级文档(loadcommit)以及任何框架/ iframe(loadcommit.isTopLevel=true)中的每次浏览器导航都会触发loadcommit.isTopLevel=false事件。
每当帧级别的负载(在顶级帧或内部帧/ iframe中)从非零转变为零时,都会触发loadstop事件。动态加载框架时(广告通常是这种情况),这大致相当于每loadcommit一次。
每个顶级文档加载都会触发一个contentload事件(通常在关联的loadstop事件之前);这不包括框架/ iframe文档的加载以及不加载新文档的顶级浏览器导航。


细节

您的浏览器完全有可能导航到新位置而无需加载新文档。示例包括单击跳转到当前文档中某个位置的链接,以及AJAX工作流程,其中当某些异步获取的内容加载时,开发人员使用a browser history API强制导航。当然,大多数浏览器导航的确会导致浏览器加载新文档。这就是我所说的真实文档加载。

每次浏览器导航都会发生一个loadcommit事件。这些事件会针对顶级文档中的每个导航以及文档中的每个框架/ iframe(以及框架/ iframe中的框架/ iframe等)触发。这就是为什么在许多情况下,您会看到几个< cc>事件以加载单个顶级文档。请注意,只有顶级loadcommit事件具有loadcommit;这也适用于isTopLevel=trueloadabortloadredirect事件,但不适用于loadstart事件。

每当帧级别的负载(在顶级帧或内部帧/ iframe中)从非零转变为零时,都会触发loadstop事件。动态加载框架时(广告通常是这种情况),这大致相当于每loadstop一次。但是,如果没有动态加载框架,则该页面通常只有一个loadcommit事件。

顶级文档加载完成后,会触发loadstop事件。这意味着在以下情况下,contentload事件不会伴随contentload事件:


loadcommit事件不适用于顶级框架,

要么
loadcommit事件与不构成真正页面加载的浏览器导航相关联。


因此,通常在每次顶层文档加载时只听一次loadcommit的操作(例如,将脚本恰好一次注入到某些文档中)。收听contentload适合响应“浏览器即将导航”(如果要忽略内部框架/ iframe,请务必检查loadcommit)。收听isTopLevel适合于对“浏览器完成导航”做出反应,但是如果您对顶级事件感兴趣,请小心,因为loadstop属性不会出现在isTopLevel事件中。

注意:下面的示例动态加载其框架。因此,通常每个loadstop都出现一个loadstop,但这并不能保证,因为如果在第一个完成之前又提交了第二个内部框架负载,则在两个完成了。

例子1

行动

加载http://www.google.com

结果

loadcommitloadstoploadcommit.isTopLevel=true

说明

这构成了加载没有其他框架/ iframe的页面。在contentload事件触发之前,文档已准备就绪。总体上似乎是这种情况,但我不知道是否可以保证。

例子2

行动

http://www.google.com中,键入搜索短语,然后等待“即时搜索”加载搜索结果。

结果

loadstoploadstop

说明

这构成了页面导航,而无需加载新文档。请注意,URL的锚点部分发生了变化。

例子3

行动

加载http://www.w3schools.com/tags/tryit.asp?filename=tryhtml_iframe

结果

loadcommit.isTopLevel=true,[几个loadstop,一个loadcommit.isTopLevel=true和几个loadcommit.isTopLevel=false-不一定按此顺序]

说明

这构成了用几个内部框架加载文档(示例iframe之外还有广告)。您将观察到,触发的contentload事件的数量永远不会超过loadstop事件的数量(因为在开始加载之前无法完成加载)。同样,您几乎可以肯定地看到,在至少一个loadstop事件被触发之前,已触发loadcommit事件。

关于google-chrome - chrome应用程序webview事件定义和顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24172367/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com