如何在JavaScript中检测是否在Chrome网络视图中加载了页面

How to detect in JavaScript if a page was loaded in a Chrome webview?

本文关键字:视图 加载 网络 是否 JavaScript 检测 Chrome      更新时间:2023-09-26

我正在为Chrome编写一个打包的应用程序,它有一个webview标记,我可以在其中加载我的网站。

网站JavaScript代码是否有可能检测到它是在网络视图中加载的?navigator.userAgent属性没有任何线索。

Jivings提到的方法之外的其他方法:

  • 在web视图中加载稍微不同的URL。,http://example.com?in_webview=1,并将其反映在网站提供的JavaScript中
  • 相同的想法,但使用#片段。我不确定#片段是否能正常工作,但如果能,那就太好了,因为服务器不会被奇怪的查询参数弄糊涂
  • 使用embedder,将一个执行不同操作的脚本插入到web视图的DOM中

当web视图完成加载时,向页面内部触发一个事件:

webview.addEventListener("loadstop", function () {
   contentWindow.postMessage('Hello from Chrome App!', targetOrigin)
});

您的内容页面可以使用常规postMessage API来侦听此消息。如果它收到一条消息,你就会知道它已加载到网络视图中。