如何在外部浏览器而不是应用内(instagram)中打开链接?

Posted

技术标签:

【中文标题】如何在外部浏览器而不是应用内(instagram)中打开链接?【英文标题】:How to open link in external browser instead of in-app (instagram)? 【发布时间】:2018-05-07 11:02:42 【问题描述】:

我一直在尝试弄清楚如何在外部浏览器(Safari、Chrome)而不是内置 Instagram 浏览器中打开您在 Instagram 应用中打开的 URL。

我希望 Instagram 网站部分中的链接要求离开 Instagram 应用并打开外部浏览器访问网站。

我尝试了很多东西,例如将 window.open 与 _blank、_system 等一起使用。还在

【问题讨论】:

您有没有找到任何解决方案来解决这个问题?我想首先实现这一点,因为 Instagram 缓存了我网站的旧版本并且不显示更改。 我也需要一个回复。 =/ 这能回答你的问题吗? How to force Instagram to open a link in Safari rather than the in app browser 【参考方案1】:

这是不可能的,因为 Instagram 开发人员故意选择使用他们自己的浏览器控件。

【讨论】:

但是有一个选项。在桌面网络版本上使用时,您可以在网络浏览器的新选项卡中打开链接。 @Ebrahim 这个问题特别提到“来自 Instagram 应用程序”,这意味着用户对本地应用程序而不是网站感兴趣,因此他们的答案是正确的。【参考方案2】:

您可以检测 Instagram 应用内浏览器

navigator.userAgent.includes("Instagram")

然后放上这样的链接

<a href=location.href target='_blank' download>Open in browser</a>

“下载”关键字中的所有魔法。当用户单击链接时,它将被重定向到本机浏览器。 它在android中完美运行。我还没有在 ios 上测试过

【讨论】:

来自medium.com/@romaia/…【参考方案3】:

我发现了一篇关于它的有趣文章, 尝试使用这段代码使 Instagram 的应用内浏览器重定向到您的网站

<script>
  if(navigator.userAgent.includes("Instagram"))
      window.location.href = "https://mywebsite.com/DummyBytes";
  
</script>

欲了解更多信息,请查看文章: https://medium.com/@sasan.salem/opening-of-your-website-in-the-viewers-external-browser-automatically-instead-of-instagram-s-8aca5ee7e22f

【讨论】:

这适用于 iOS 吗?您提到的文章告诉这是针对Android的 我现在不知道如何帮助你,即使在安卓设备上也很难让它工作。您需要能够打开浏览器实例并在后台发送 Instagram。【参考方案4】:

打开您的网站自动在查看者的外部浏览器中而不是 Instagram 的应用内浏览器中(在 Android 设备上)。

您可以通过充当要下载的文件来解决它,然后应用内浏览器会将您重定向到移动浏览器。

不适用于 iPhone。 :(

php



<?php
    $userAgent = $_SERVER['HTTP_USER_AGENT'];
    if (strpos($userAgent, 'Instagram')) 
        header('Content-type: application/pdf');
        header('Content-Disposition: inline; filename= blablabla');
        header('Content-Transfer-Encoding: binary');
        header('Accept-Ranges: bytes');
        @readfile($file);
        die();
    
?>

ASP.NET Web API:

namespace DotNet.Controller

    public class DummyBytesController : ApiController
    
        [HttpGet]
        public HttpResponseMessage Get()
        
            HttpResponseMessage Response;

            string UserAgent = HttpContext.Current.Request.UserAgent;
            if(UserAgent.Contains("Instagram"))
            
                Response = new HttpResponseMessage(HttpStatusCode.OK);
                Response.Content = new ByteArrayContent(new byte[50]);
                Response.Content.Headers.ContentType = new MediaTypeHeaderValue("application/octet-stream");
                return Response;
            
            else
            
                Response = Request.CreateResponse(HttpStatusCode.Redirect);
                Response.Headers.Location = new Uri("https://mywebsite.com");
                return Response;
            
        
    

【讨论】:

【参考方案5】:

您可以将此脚本添加到 head 以重定向到 chrome:

<script>
        var userAgent = navigator.userAgent || navigator.vendor || window.opera;
        var str = navigator.userAgent;
        var instagram = str.indexOf("Instagram");
        var facebook = str.indexOf("FB");

        if (/android/i.test(userAgent) && (instagram != -1 || facebook != -1) ) 
            document.write("<a target=\"_blank\" href=\"https://yourdomain.com\" download id=\"open-browser-url\">Please wait. Proceed to Chrome</a>");
            window.stop();
            let input = document.getElementById('open-browser-url');
            if (input) 
                input.click();
            
        
    </script>

【讨论】:

【参考方案6】:

其实是有可能的。 您首先使用应用内浏览器访问该链接,然后单击页面右上角的 3 点按钮并选择“在 Chrome 中打开”。

【讨论】:

以上是关于如何在外部浏览器而不是应用内(instagram)中打开链接?的主要内容,如果未能解决你的问题,请参考以下文章

如何强制 Instagram 在 Safari 而不是应用内浏览器中打开链接

为啥我的侧载 Excel Javascript 加载项在外部浏览器中打开,而不是在任务窗格中打开?

Cordova RSS 提要链接不会在外部浏览器中打开

如何从 iframe 内部提交表单并将结果显示在外部

Webview 链接在外部浏览器中打开

如何验证网址是不是为应用链接