2013-02-22 24 views
1

我的webapp上只有以橫向顯示div的代碼如下。它在手機上效果很好,但它在iPad上也很棒,我不想。有沒有辦法讓這個功能只能在手持設備上使用?僅針對手持設備的window.orientation檢測

$(function(){ 
window.onload = handleOrientation; 
    window.addEventListener('orientationchange', handleOrientation, false); 
     function handleOrientation() { 
      if (window.orientation == "90" || window.orientation == "-90") { 
      document.getElementById("landscape").style.display = 'block'; 
     } else { 
      document.getElementById("landscape").style.display = 'none'; 
     } 
    } 
}); 

我在javascript中的總福利局,學習快,我可以感謝你們學習,但我不知道該怎麼在這一個做的。

+1

您可以檢查設備屏幕的寬度。如果它小於手持設備的閾值,則只需連接監聽器。 – Ehtesham 2013-02-22 21:36:22

+0

@Ehtesham你應該在答案中寫下。 – 2013-02-22 21:37:46

+0

爲什麼你不用CSS樣式的媒體查詢風格的div,這就是他們的目的。 – hexalys 2014-03-18 03:33:54

回答

0

您需要做一些用戶代理嗅探,因爲幾乎不可能通過檢查屏幕大小/像素密度來區分手機和平板電腦。甚至用戶代理也不是100%可靠的。

你可能會找到一些靈感在這裏:http://detectmobilebrowsers.com/

+0

我試圖避免列出所有的用戶代理,並希望這是一種檢測手持設備的方法。 – jkuhns5 2013-02-22 21:29:56

+0

iPad **是**手持設備:-)所以iPad mini,Nexus 7等等......用戶代理嗅探很糟糕,但如果您想要精確定位設備,那麼這是唯一的解決方案。 – strah 2013-02-22 21:32:51

1

你應該能手機和平板電腦之間的區別,然後禁用它適用於平板電腦。

區分的一種方法是找出屏幕寬度。

if (window.screen.width < 320) { 
// This is an iphone 
// 320 pixels is the width of an iphone 
// do the necessary 
} 

這可能不是最好的辦法,但解決問題

+1

有些Android手機的寬度爲480或更多...... iPhone不再是市場上唯一的手機。 – strah 2013-02-22 21:47:25

+0

@strah我剛剛舉了一個例子。你可以用480px代替。仍然320px iPhone會工作,平板電腦不會。 – LINGS 2013-02-22 21:51:41

+1

高清手機(1920×1080)如何?你如何通過平板電腦告訴他們? – strah 2013-02-22 21:53:51

0

如果你只關心iPad作爲平板電腦。您可以檢查瀏覽器的用戶代理,並僅在手機上連接監聽器。否則,檢查它是否是帶有用戶代理字符串的移動設備。

if (!navigator.userAgent.test(/iPad/i)) { 
    // Attcah listener here 
} 

查看以下問題的答案,以瞭解如何使用用戶代理字符串進行檢測。

How do detect Android Tablets in general. Useragent?