2015-02-06 136 views
0

我正在使用下面的代碼來檢測移動設備,並且我想檢測僅限Android或僅iOS。我使用if(isMobile.iOS()) alert('iOS');測試了移動檢測並顯示警報。使用JavaScript檢測移動設備

但是我想要顯示Android的Google Play徽章(如果它是Android)和Apple商店徽章(如果它是iOS),但由於某些原因,下面的代碼無法運行。有人能告訴我我做錯了什麼嗎?

var isMobile = { 
    Android: function() { 
     return navigator.userAgent.match(/Android/i); 
    }, 
    iOS: function() { 
     return navigator.userAgent.match(/iPhone|iPad /i); 
    }, 
}; 

if (isMobile.Android()) { 
    document.getElementById("googlePlayBadge").innerHTML = "<img src='modal-img/googlePlayBadge.png' alt='Google Play' class='img-responsive' />"; 
} else { 
    if (isMobile.iOS()) 
    document.getElementById("appStoreBadge").innerHTML = "<img src='modal-img/appStoreBadge.png' alt='App Store' class='img-responsive' />"; 
}; 

<section class="text-center"> 
    <div id="appStoreBadge"></div> 
    <div id="googlePlayBadge"></div> 
</section> 
+0

你設置相同的圖像的兩種設備類型...哪來的黑莓? Windows Mobile在哪裏? Symbian在哪裏? – 2015-02-06 19:36:17

+0

Marc我只是在尋找Androind和iOS。我試圖推廣的應用程序僅適用於這兩個應用程序,並且我複製了錯誤的代碼。我有正確的代碼,我在這裏使用。 – Alverto 2015-02-06 19:57:39

回答

0

使用JS可靠地檢測設備很難,男人。大多數理智的人會避免它。

有跡象表明,這樣做的庫,但如果這是太多的開銷:

var useragent = navigator.userAgent.toLowerCase(); 

var isAndroid = useragent.indexOf("android") > -1; //&& ua.indexOf("mobile"); 

if(isAndroid) { 

alert('I am an android device'); 

} 

如果由於某種原因,你不關心在所有關於比Android或iOS(如Windows手機等任何東西,黑莓等等),你可以檢查一個觸摸事件是否可用,然後檢查它是否是iOS(因爲這更可靠),如果它!= iOS但確實有觸摸,你可以顯示Play商店圖標。

對不起,我還要提到的是,我使用的成功JS,但它從這裏:http://davidwalsh.name/detect-android

+0

您的Android檢測代碼如何執行與OP已經使用的任何操作不同的內容? – jfriend00 2015-02-06 19:46:46

+0

對不起,我複製了原來的,而不是我正在使用的實際代碼。我在這裏更正了代碼 – Alverto 2015-02-06 19:55:41