如果深层链接打开本机应用程序,则阻止后退href触发

时间:2017-12-12 08:10:23

标签: javascript jquery deep-linking mobile-website

我希望在我的网页上有一个链接,试图在Facebook移动应用上打开一个人的Facebook个人资料(如果已安装),如果没有,请在facebook.com上打开。

许多网站和SO页面都提供了以下方法。

<a data-fb-url="fb://profile?app_scoped_user_id=myProfile" 
    href="http://www.facebook.com/myProfile">
    Go to Facebook
</a>
$('[data-fb-url]').click(function () {
    // set a back up in case the app doesn't open
    setTimeout(() => document.location.href = this.href, 25);

    // open the app if possible
    document.location.href = $(this).attr('data-fb-url');

    // prevent the link from triggering by simply being clicked
    return false;
});

这实际上打开了应用程序,但它也不会阻止浏览器导航到Facebook移动页面。

我试过的事情

  • 更长的超时时间。
  • 向窗口的pagehideunload事件添加侦听器并清除超时。
  • 在iframe中打开应用程序链接并等待框架的load事件清除超时。
  • 使用window.location代替document.location.href

在应用程序打开后,这些都没有阻止位置更改。

我应该指出我只在iOS Chrome上试过这些。这些方法可能适用于其他浏览器,但我还没有真正关心它们。

0 个答案:

没有答案