如何强制通过电子邮件发送的链接在用户浏览器而不是 gmail 应用内浏览器中打开

How to force links sent by email to open in user's browser instead of gmail in-app browser

我有一个网站 JavaScript-繁重,需要用户录制他们的视频,当我向我的客户发送电子邮件时,link 在 gmail 的应用程序内浏览器中打开,您无法记录自,而且还缺少很多功能。

当用户点击电子邮件中的 links 到他们想要的 select 任何浏览器而不是 gmail 的应用程序内浏览器时,如何触发弹出窗口?我已经看到有人这样做了,我尝试并为此做了一些研究,但没有结果。

默认情况下,网络浏览器无法打开竞争对手的网络浏览器。这将是一个安全风险。有涉及用户下载附加组件或扩展程序的黑客攻击。请参阅 whosebug.com/questions/10070744/open-ie-browser-in-firefox-chrome-page

中的答案

您提到的弹出窗口很可能是应用程序。用户必须授予权限。 (这个我没有经验)。

似乎无法以编程方式强制 Android 上的电子邮件在 Chrome 浏览器中打开。用户必须更改他们的系统设置。因此,另一种方法可能是教育用户(关于功能的丧失)。这可以通过执行浏览器嗅探并在网页顶部显示适当的消息来完成。

使用 JavaScript,您可以通过创建函数来测试某个函数是否受支持和启用。下面是一个示例,它确定 LocalStorage 是否可用。 (仅供参考)。

function isLocalStorageEnabled(){
    var test = 'test';
    try {
        localStorage.setItem(test, test);
        localStorage.removeItem(test);
        return true;
    } catch(e) {
        return false;
    }
}

if(isLocalStorageEnabled() === true){
    // available
}else{
    // unavailable
}

此外,我认为没有单一的方法可以检测用户是否使用 Gmails 内置浏览器或 Chrome。但是,根据以下因素,您可以假设他们在使用 Gmail,如果:

  • 用户点击了电子邮件 link。 (您可以附加一个查询字符串。在登陆网站时,存储在会话中并在不附加查询字符串的情况下重定向)。
  • 用户在 android (/Android/.test(window.navigator.userAgent)).
  • 用户在 Chrome(查看答案 whosebug.com/questions/4565112/javascript-how-to-find-out-if-the-user-browser-is-chrome/13348618#13348618)。
  • Web 浏览器不支持某种 JavaScript 功能,该功能适用​​于 Chrome 但不适用于 Gmails 浏览器。

如果所有条件都为真,那么您可以显示如下消息:For full functionality, please use Chrome or alternatively in Gmail: Go to Settings, General, and uncheck the option to open links in gmail (and reopen link from Gmail).

注意:浏览器检测可以伪造。然而,这对于显示消息应该没问题。

将 Gmail(或任何应用)WebView 中的 link 发送到系统处理程序的选项是为应用本身保留的。

此处描述了应用程序的实现:

WebView link click open default browser

但是,如果您指示收件人在电子邮件中长按 link,则可以选择在浏览器中打开 link,这会将他们带到默认浏览器。