」工欲善其事,必先利其器。「—孔子《論語.錄靈公》
首頁 > 程式設計 > 如何使用 JavaScript 在 Android 瀏覽器中可靠地偵測裝置旋轉?

如何使用 JavaScript 在 Android 瀏覽器中可靠地偵測裝置旋轉?

發佈於2024-11-09
瀏覽:542

How can I Reliably Detect Device Rotation in a Browser on Android with JavaScript?

使用JavaScript 偵測Android 瀏覽器中的裝置旋轉

偵測旋轉的相容性挑戰

使用JavaScript 偵測裝置旋轉與具有明確定義方法的iPhone 相比,Android 手機上的瀏覽器可能更具挑戰性。 Android 裝置上的行為可能不一致,事件的順序和頻率以及 screen.width 和 window.orientation 等值的變化。

旋轉檢測的可靠方法

為了解決這些不一致問題,建議監聽 resize 和orientationChange 事件並實施輪詢作為安全措施。這種方法可確保您最終會收到有效的方向值。

var previousOrientation = window.orientation;
var checkOrientation = function(){
    if(window.orientation !== previousOrientation){
        previousOrientation = window.orientation;
        // Handle orientation change as needed
    }
};

window.addEventListener("resize", checkOrientation, false);
window.addEventListener("orientationchange", checkOrientation, false);

// (Optional) Poll for orientation changes on Android (180 degree turns)
setInterval(checkOrientation, 2000);

事件序列和值變更

事件序列和值變更因裝置而異。以下表格總結了各種設備的結果:

方向innerWidthscreen.widthiPad 2調整大小,方向改變90 1024768iPhone 4調整大小,方向更改90 480320Droid手機方向更改,調整大小90320 ]569 三星Galaxy平板電腦
設備設備觸發的事件(到橫向)
screen.width

orientationchange、orientationchange、orientationchange、調整大小、orientationchange90、90、90

400

683How can I Reliably Detect Device Rotation in a Browser on Android with JavaScript?

其他注意事項

雖然此方法提供了檢測設備旋轉的可靠方法,但重要的是要保持請記住JavaScript 在這方面的限制。例如,某些值(例如 screen.width)可能不會總是按預期更改。也建議避免僅依賴 screen.width,因為它在 iOS 裝置上的行為不一致。

最新教學 更多>
  • 如何使用 Curl 模擬 Web 瀏覽器的 GET 請求?
    如何使用 Curl 模擬 Web 瀏覽器的 GET 請求?
    使用Curl 模擬Web 瀏覽器的GET 請求嘗試使用curl 檢索網頁時,您可能會遇到似乎源於以下原因的錯誤無法辨識或未實現的請求標頭。這是因為curl本身並不會模擬網頁瀏覽器的GET請求標頭。 要正確模擬網頁瀏覽器,請依照下列步驟操作:設定使用者代理程式:使用CURLOPT_USERAGENT為...
    程式設計 發佈於2024-11-09
  • 透過「從參數中提取資訊」專案釋放您的 Python 能力
    透過「從參數中提取資訊」專案釋放您的 Python 能力
    您準備好將您的 Python 技能提升到新的水平了嗎? LabEx 提供的「從參數中提取資訊」專案就是您的最佳選擇。這個引人入勝的項目將引導您完成從給定文本中提取數字、計算平均值並將結果格式化為小數點後兩位的過程。潛入並釋放你作為 Python 程式設計師的真正潛力! 踏上令人興奮...
    程式設計 發佈於2024-11-09
  • HTML 表單中的預設提交按鈕行為是什麼?
    HTML 表單中的預設提交按鈕行為是什麼?
    確定HTML 表單中的預設提交按鈕在未按一下特定提交按鈕的情況下提交HTML 表單時,例如按輸入或在JavaScript 中使用HTMLFormElement.submit(),瀏覽器需要確定多個提交按鈕(如果有)中的哪一個應被視為按下的按鈕。此確定對於觸發 onclick 事件處理程序和傳送到 W...
    程式設計 發佈於2024-11-09
  • 如何在Python中實現非同步Shell指令執行:探索最佳實踐
    如何在Python中實現非同步Shell指令執行:探索最佳實踐
    Python 中的非同步Shell 指令執行:探索替代方法從Python 腳本非同步執行外部指令是一項有價值的技術,允許持續執行腳本當外部命令執行其任務時。本文探討了實現這種異步行為的適當方法,重點關注os.system() 和subprocess.Popen.os.system() 和& 符號 的...
    程式設計 發佈於2024-11-09
  • 狀態測試案例中的 ReactDOM.unstable_batchedUpdates。
    狀態測試案例中的 ReactDOM.unstable_batchedUpdates。
    在本文中,我們將研究 ReactDOM.unstable_batchedUpdates 在測試案例中的使用,特別是在 Zustand(React 的流行狀態管理庫)中。我們還將分解測試並解釋批次更新如何透過最小化不必要的重新渲染來增強 React 的效能。 理解測試案例 這是我們將...
    程式設計 發佈於2024-11-09
  • 如何使用 jQuery 和 CSS 建立響應式水平頁面滑動系統?
    如何使用 jQuery 和 CSS 建立響應式水平頁面滑動系統?
    響應式水平頁面滑動問題設計響應式水平導航系統面臨幾個挑戰:維護頁視窗內的可見性防止之間的間隙或重疊頁允許頁超出100%高度,並具有捲軸可見性確保與Internet Explorer 9 或更高版本的兼容性解決方案該解決方案採用jQuery 並包含以下主要功能:響應式調整大小:腳本根據頁數計算包裝器的...
    程式設計 發佈於2024-11-09
  • 為什麼編譯器中的「static_assert」與非型別模板參數的行為不同?
    為什麼編譯器中的「static_assert」與非型別模板參數的行為不同?
    編譯器中非型別模板參數的 static_assert 行為不一致 在 C 中,static_assert 在編譯時可驗證條件。然而,最近的觀察發現,當 static_assert 與不同編譯器中的非類型模板參數結合使用時,其行為存在差異。 具體來說,以下程式碼片段:template <int ...
    程式設計 發佈於2024-11-09
  • 何時以及如何在 JavaScript 的 parseInt() 函數中使用 Radix?
    何時以及如何在 JavaScript 的 parseInt() 函數中使用 Radix?
    了解 parseInt 中對基數的需求JavaScript 中的 parseInt() 函數可讓您將表示數字的字串轉換為整數。但是,您可能不會總是希望將整數解析為以 10 為基數的數字。這就是基數參數發揮作用的地方。 什麼是基數? 基數是指在數字系統中單一數字可以表示的值的數量。例如,我們常用的十進...
    程式設計 發佈於2024-11-09
  • 嘗試重載佇列構造函數
    嘗試重載佇列構造函數
    此專案旨在透過新增兩個新的建構子來改進 Queue 類別。 第一個建構子將從另一個現有佇列建立一個新佇列。 第二個建構子將允許您建立具有初始值的佇列。 這些建構子顯著提高了 Queue 類別的可用性。 1 建立一個名為 QDemo2.java 的文件,並將更新後的 Queue 類別從 Tr...
    程式設計 發佈於2024-11-09
  • 實施訂單處理系統:零件監控與警報
    實施訂單處理系統:零件監控與警報
    1. Introduction and Goals Welcome to the fourth installment of our series on implementing a sophisticated order processing system! In our pre...
    程式設計 發佈於2024-11-09
  • 以客戶端為中心的錯誤處理
    以客戶端為中心的錯誤處理
    了解和处理错误 为了有效地处理错误,必须了解可能发生的错误类型。让我们首先对您可能遇到的错误进行分类。 Web 客户端环境中的错误类型 网络错误 连接问题:与服务器建立连接时出现问题。 超时:请求花费太长时间才能收到响应。 DNS 错误:域名解析问题...
    程式設計 發佈於2024-11-09
  • 如何在Python中高效率計算目錄大小?
    如何在Python中高效率計算目錄大小?
    使用 Python 進行目錄大小計算為了測量目錄的空間佔用情況,Python 提供了幾種方法。以下我們深入探討一個高效率、全面的解決方案:import os def directory_size(start_path): total_size = 0 for root, direct...
    程式設計 發佈於2024-11-09
  • 如何修復Go模組導入過時的套件版本?
    如何修復Go模組導入過時的套件版本?
    Go 模組匯入過時的套件版本嘗試使用Go 模組將新套件合併到專案時,您可能會遇到以下問題:儘管該套件被標記為“最新”,但模組系統會檢索該套件的過時版本。這個過時的版本可能缺少程式碼所需的功能,從而導致編譯或執行時錯誤。 解決方案:在 go.mod 檔案中指定版本Go 模組系統可讓您指定要匯入的套件的...
    程式設計 發佈於2024-11-09
  • 何時使用按值傳遞與按右值引用傳遞?
    何時使用按值傳遞與按右值引用傳遞?
    理解按值傳遞與按右側值引用傳遞定義函數參數時,在按值傳遞和按右值引用傳遞之間進行選擇可以顯著影響函數的介面和效率。 按值傳遞與按右值傳遞參考在按值傳遞中,會在函數內建立參數的副本。透過右值引用傳遞時,會建立對原始參數的引用,從而允許直接操作該參數。 介面中的差異右值引用參數的使用向呼叫者傳達以下訊息...
    程式設計 發佈於2024-11-09
  • 如何使用 Joda-Time 將日期字串轉換為日期時間物件?
    如何使用 Joda-Time 將日期字串轉換為日期時間物件?
    使用Joda 時間庫將日期字串轉換為DateTime 物件:嘗試轉換格式為「04/」的日期字串時02/2011 20:27:05” 到使用Joda-Time 庫的DateTime 對象,您可能會遇到指示格式無效的錯誤。出現此錯誤的原因是默認的DateTime 構造函數需要標準日期格式,該格式與提供的...
    程式設計 發佈於2024-11-09

免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。

Copyright© 2022 湘ICP备2022001581号-3