检测页面是在三星股票浏览器中查看还是作为独立的网络应用程序查看



正如标题所述,我正在尝试检测我的网页是作为samsungs股票浏览器中的网页查看的,还是作为保存在主屏幕上的独立web应用程序打开的。但据我所知,我发现的javascript代码只适用于Safari和Chrome。

有人能为我提供一个好的解决方案吗?

由于某种原因,window.matchMedia('(display-mode: standalone)').matches在三星互联网安装的PWA上是false,即使其显示模式确实是standalone

然而,你可以按照这个答案中提供的方法,它在三星互联网上工作:

在清单文件中设置开始URL以包括查询字符串参数,例如:

"start_url": "./?mode=standalone"

然后,在您的JavaScript中,您可以检查这个查询字符串参数。

如果您处于独立模式,地址栏对用户不可见,因此不会影响他们。

我是PWA的新手,所以我在三星浏览器上遇到了类似的问题。

看起来很多人发布这个问题已经有3年了,对我来说,仍然很难找到更好的解决方案,因为"start_url";还不够。

我在谷歌上搜索并寻找解决这个问题的方法,似乎我做到了。最后,帖子解决了我的问题。

就我而言,我只考虑并测试了chrome浏览器、三星浏览器和safari浏览器。如果你愿意的话,你可以自定义,就像我对源代码所评论的那样。

const BROWSER_TAB = "browser-tab";
const STAND_ALONE = "standalone";
const getDisplayMode = () => {
let displayMode = BROWSER_TAB;
if (window.navigator.standalone || window.matchMedia("(display-mode: standalone)").matches) {
displayMode = STAND_ALONE; // PWA
} else if (
window.screen.height - document.documentElement.clientHeight <
100
) {
displayMode = STAND_ALONE; // PLAY_STORE, (maybe AppStore as well)
} else if (
new URLSearchParams(window.location.search).get("source") === "pwa" // "start_url": "/?source=pwa", from menifest.json
) {
displayMode = STAND_ALONE; // IOS or PWA or PLAY_STORE but it only works on start_url in menifest.json
}
return displayMode;
};

我希望这能有所帮助,尽管这不是一个完美的解决方案。

最新更新