在javascript中区分Chrome浏览器和chrome应用程序

时间:2017-03-23 11:06:36

标签: javascript google-chrome google-chrome-app user-agent

如何区分我的代码是在Chrome浏览器还是Chrome应用程序中运行?该应用程序使用webview加载特定页面,其中javascript代码必须以不同方式处理chrome app和chrome浏览器。

1 个答案:

答案 0 :(得分:0)

最简单的方法是inject a content script进入网页视图,然后在加载前将injects some code加入页面。

沿着这些方向:

webview.addContentScripts([{
  name: 'beacon',
  matches: ['https://www.example.com/*'],
  js: { files: ['beacon.js'] },
  run_at: 'document_start'
}]);
webview.src = "https://www.example.com/app"

// beacon.js
var script = document.createElement('script');
script.textContent = "window.inWebview = true;";
(document.head||document.documentElement).appendChild(script);
script.remove();

然后,在您的代码中,您可以检查window.inWebview是否已定义且为真。

不太干净的替代方案:

  • 使用webview.setUserAgentOverride以可预测的方式修改用户代理。
  • 只需使用额外参数加载页面:https://www.example.com/app?webview=1