使用javascript可以檢測iPad或Galaxy Tab上瀏覽器方向的變化嗎?我認爲可以使用CSS媒體查詢。使用javascript檢測方向變化
回答
UPDATE:
你可能想看看
jQuery mobile orientationchange
或普通JS一:
window.addEventListener("orientationchange", function() {
alert(window.orientation);
}, false);
年長的答案
http://www.nczonline.net/blog/2010/04/06/ipad-web-development-tips/
Safari瀏覽器在iPad上不支持的window.orientation屬性,所以如果需要的話,你可以用它來確定用戶是否在水平或垂直模式。作爲對此功能的提醒:
window.orientation is 0 when being held vertically
window.orientation is 90 when rotated 90 degrees to the left (horizontal)
window.orientation is -90 when rotated 90 degrees to the right (horizontal)
當設備旋轉時,還會觸發窗口對象上的orientationchange事件。
您還可以使用CSS媒體查詢,以確定是否在垂直或水平方向正在舉行的iPad,比如:
<link rel="stylesheet" media="all and (orientation:portrait)" href="portrait.css">
<link rel="stylesheet" media="all and (orientation:landscape)" href="landscape.css">
<script type="text/javascript">
var updateLayout = function() {
if (window.innerWidth != currentWidth) {
currentWidth = window.innerWidth;
var orient = (currentWidth == 320) ? "profile" : "landscape";
document.body.setAttribute("orient", orient);
window.scrollTo(0, 1);
}
};
iPhone.DomLoad(updateLayout);
setInterval(updateLayout, 400);
</script>
window.orientation是你在找什麼。這裏還有一個onOrientationChange事件 作品爲Android,iPhone和,我主要肯定的是,iPad的
添加到@ mplungjan答案,我發現使用webkit「本地」(我真的不怎麼稱呼它)事件,'deviceorientation' 。
在Mozilla Developer network他們有一個很好的解釋,如何規範webkit和Gecko之間的幫助我解決這個問題。
可以使用orientationChange事件,像這樣:
window.addEventListener('orientationchange', function(){
/* update layout per new orientation */
});
這個事件已經被討論過了。 – 2012-09-22 00:22:05
您可以使用mediaMatch評估CSS媒體查詢,例如
window
.matchMedia('(orientation: portrait)')
.addListener(function (m) {
if (m.matches) {
// portrait
} else {
// landscape
}
});
CSS媒體查詢在orientationchange
之前觸發。如果您想捕捉事件的結束(旋轉完成時),請參閱mobile viewport height after orientation change。
一個易於使用的片段:
function doOnOrientationChange()
{
switch(window.orientation)
{
case -90:
case 90:
// alert('landscape');
$('#portrait').css({display:'none'});
$('#landscape').css({display:'block'});
break;
default:
// alert('portrait');
$('#portrait').css({display:'block'});
$('#landscape').css({display:'none'});
break;
}
}
window.addEventListener('orientationchange', doOnOrientationChange);
// First launch
doOnOrientationChange();
從「Cross-device, cross-browser portrait-landscape detection」
這是一個關於找出一個移動設備是處於縱向或橫向模式;你不需要關心它的方向。對於所有你知道的,如果你把你的iPad倒過來,它是在肖像模式。
$(window).bind("resize", function(){
screenOrientation = ($(window).width() > $(window).height())? 90 : 0;
});
90代表景觀,0代表縱向,跨瀏覽器,跨設備。
window.onresize事件隨處可用,它總是在正確的時間觸發;不要太早,永遠不要太晚。事實上,屏幕的大小也總是準確的。
用戶如何以縱向方向握住手機,然後打開虛擬鍵盤,導致寬度變得更大,然後在小屏幕上顯示高度,情況如何?用戶仍然以相同的縱向方向握住手機,但是您的方法可能會導致方向更改的錯誤結果。 – 2016-07-26 15:22:12
- 1. 立即檢測iOS方向變化
- 2. 使用javascript檢測幻燈片方向
- 3. 使用Javascript檢測圖像的方向
- 4. 使用javascript檢測iPad設備方向
- 5. 使用android檢測設備方向變化:screenOrientation
- 6. 使用jQuery檢測滾動方向的變化
- 7. Android 2.3.3&4.1.2 android:configChanges用於檢測方向變化
- 8. 檢測變化
- 9. 檢測景觀風景取向變化
- 10. 使用javascript檢測重定向 - 如何?
- 11. 使用javascript檢測用戶選擇的方向
- 12. JavaScript源代碼的變化檢測
- 13. php javascript檢測頁面變化
- 14. 的JavaScript未檢測到變化
- 15. 禁用方向但檢測方向
- 16. 檢測鼠標方向 - JavaScript的
- 17. 在運行時檢測SplitContainer方向的變化
- 18. UIScrollView - 在layoutSubviews中檢測滾動與方向變化?
- 19. 我該如何檢測android中片段的方向變化
- 20. 沒有佈局變化的Android屏幕方向檢測
- 21. 檢測來自跨域iframe內的方向變化
- 22. 檢測到hammer.js事件的方向變化
- 23. WP7當SupportedOrientations =「Portrait」時檢測屏幕方向變化
- 24. 方向變化時自動檢測圖像
- 25. 德爾福安卓 - 檢測設備方向變化
- 26. 在Symbian/Qt中檢測手機方向變化的問題
- 27. 如何檢測表中任何的變化,使用javascript?
- 28. 使用javascript檢測瀏覽器選項卡的變化
- 29. 使用純javascript檢測DOM元素位置變化
- 30. 輸入值變化檢測使用類
看來,從iOS 4.0開始,UIWebView版本不再支持Javascript window.orientation屬性,或者至少我已經體驗過了。所以,我發現通知UIWebView的內部Javascript有關方向更改的唯一方法是調用[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@「didRotateTo('%@')」,orient]];其中webView是我的UIWebView,orient是當前設備方向的字符串表示。 didRotateTo是一個javascript函數,它接受一個參數(方向爲字符串) – 2011-04-28 10:05:44
對於輪詢,有一個'orientationchange'事件在設備的方向更改時觸發。 – alex 2012-07-04 06:16:59