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