javascript - 如何在网站中进行深层链接

标签 javascript android html deep-linking

<a class="grey-text text-lighten-3" target="_blank" href="javascript:void(0);" onclick="document.write(yourOS())">Instagram</a>



function yourOS() {
var ua = navigator.platform.toLowerCase();
if (ua.indexOf("android") != -1) {
    document.write(.link("instagram://user?username=owendunnigan"));
} else {
    .link("http://www.instagram.com/OwenDunnigan");
}
}

我正在尝试将应用程序深层链接到我的网站,但我不知道如何让它转到计算机上的常规旧 Instagram,然后转到 Android 或 iOS 设备上的应用程序。我知道这些链接有效,因为我单独尝试过它们。

最佳答案

我会以不同的方式处理这个问题。我不会使用 onclick 检查源代码,而是执行 onload。所以:

    <script>
    function onLoad(){
       var urlLink = "http://www.instagram.com/OwenDunnigan";
       var urlLink2 = "http://www.twitter.com/OwenDunnigan";
       var urlLink3 = "http://www.facebook.com/OwenDunnigan";
       var ua = navigator.userAgent.toLowerCase();
       var isAndroid = ua.indexOf("android") > -1;
       if(isAndroid) {
          urlLink = "instagram://user?username=owendunnigan";
          urlLink2 = "twitter://user?username=owendunnigan";
          urlLink3 = "facebook://user?username=owendunnigan";
       }
       document.getElementById('yourLink').setAttribute('href', urlLink);
       document.getElementById('yourLink2').setAttribute('href', urlLink2);
       document.getElementById('yourLink3').setAttribute('href', urlLink3);
    }
    window.onload = onLoad;
    </script>
    
    <a id="yourLink" class="grey-text text-lighten-3" target="_blank">Link</a>

我在我的 Android 设备/笔记本电脑上测试了这个,它对两者都有效。

编辑:低落和肮脏的方式。您可以通过让 onload 函数调用传入变量的函数来创建更多 OOP 风格,但为了简单起见,这样做就可以了。

编辑2:

<script>
        function getMobileOperatingSystem() {
           var userAgent = navigator.userAgent || navigator.vendor || window.opera;
           if( userAgent.match( /iPad/i ) || userAgent.match( /iPhone/i ) || userAgent.match( /iPod/i ) )
           {
              return 'iOS';
           }
           else if( userAgent.match( /Android/i ) )
           {
              return 'Android';
           }
           else
           {
              return 'unknown';
           }
        }

        function onLoad(){
           var urlLink1 = "http://www.instagram.com/OwenDunnigan";
           var urlLink2 = "http://www.twitter.com/OwenDunnigan";
           var urlLink3 = "http://www.facebook.com/OwenDunnigan";
           switch(getMobileOperatingSystem()){
               case 'Android':
                    urlLink1 = "instagram://user?username=owendunnigan";
                    urlLink2 = "twitter://user?username=owendunnigan";
                    urlLink3 = "facebook://user?username=owendunnigan";
                    break;
               case 'iOS':
                    urlLink1 = "instagram://user?username=owendunnigan";
                    urlLink2 = "twitter://user?username=owendunnigan";
                    urlLink3 = "facebook://user?username=owendunnigan";
                    break;
               default:
                    break;
            }
           document.getElementById('yourLink1').setAttribute('href', urlLink1);
           document.getElementById('yourLink2').setAttribute('href', urlLink2);
           document.getElementById('yourLink3').setAttribute('href', urlLink3);
        }
        window.onload = onLoad;
        </script>
        
        <a id="yourLink1" class="grey-text text-lighten-3" target="_blank">Link1</a>
        <a id="yourLink2" class="grey-text text-lighten-3" target="_blank">Link2</a>
        <a id="yourLink3" class="grey-text text-lighten-3" target="_blank">Link3</a>

清理代码并从此处引入函数:Detecting iOS / Android Operating system 您可以通过简单地扩展检测函数并添加 case 语句来添加其他系统。当然,我没有像通常那样添加默认的 case 语句,但我首先调用了变量,所以在我看来没有理由重置它们,但你可以用它做更多的事情。如果这不起作用,请告诉我。

关于javascript - 如何在网站中进行深层链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35119474/

相关文章:

javascript - 如何使用两个数值变量设置实例属性

html - IE8 + pie.htc : adding html5shiv. js再次破坏圆角

javascript - 如何在图表上的 x 轴标签文本后面添加元素?

PHP 警报消息

android - 如何更改 Android 动态壁纸中对话框首选项的布局?

java - Android 模拟 GPS 卫星(不仅仅是位置)

android - uiautomatorviewer 不适用于最新的 MacOS

javascript onload 事件不会在 iPhone 上触发

html - 页面中间两个div一个在另一个下面

javascript - Cypress 测试 : How To Compare Count Of Elements Before & After AJAX Call