国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 語言 > JavaScript > 正文

JavaScript獲取移動設備型號的實現代碼(JS獲取手機型號和系統)

2024-05-06 15:20:52
字體:
來源:轉載
供稿:網友

我們一般在瀏覽器里識別用戶的訪問設備都是通過 User Agent 這個字段來獲取的,但是通過它我們只能獲取一個大概的信息,比如你用的是 Mac 還是 Windows,用的是 iPhone 還是 iPad。如果我想知道你用的是第幾代 iPhone,這個方法就不行了,前段時間我正好有這個需求,識別移動客戶端的具體型號(主要是 iOS 設備),于是思考了下這個問題的實現。

首先,我跟大家一樣想到了 UA,不過事實證明這路走不通。就在我無聊一個一個擺弄瀏覽器的 API 時,突然一篇文章里的某段代碼提醒了了我。這篇文章講的是怎樣通過 js 獲取圖形設備信息的,因為 HTML5 支持了 canvas,所以可以通過 API 獲取圖形設備的型號,比如顯卡的型號。

(function () {  var canvas = document.createElement('canvas'),    gl = canvas.getContext('experimental-webgl'),    debugInfo = gl.getExtension('WEBGL_debug_renderer_info');  console.log(gl.getParameter(debugInfo.UNMASKED_RENDERER_WEBGL));})();

運行這段代碼就可以獲取顯卡的型號了,如果你在iOS的設備里運行,會獲取到諸如 Apple A9 GPU 之類的信息。而我們知道每一代 iOS 設備的 GPU 型號都是不同的,比如 iPhone 6 是 A8,而 iPhone 6s 就是 A9。看到這里,你應該大概知道我的思路了,就是通過識別 GPU 的型號來辨別設備的型號。

不過這還有個小瑕疵,有些設備是同一代,也就是 GPU 型號完全相同,比如 iPhone 6s, iPhone 6s Plus, iPhone SE。它們用的都是 Apple A9 GPU,怎么區分開它們呢?你會發現它們最大的不同不就是分辨率不同嗎?而通過 JavaScript 我們又可以方便地獲取屏幕分辨率,這樣把兩個手段綜合應用一下就可以獲取設備的準確型號了。

這里有個示例網址,大家可以用手機訪問
https://joyqi.github.io/mobile-device-js/example.html

我的代碼都放在了 GitHub 上
https://github.com/joyqi/mobile-device-js

這次思考給了我一些解決問題的啟發,我們在思考解決方案的時候從側面入手說不定會有新的發現。就比如我們的這個代碼,目前還無法識別同一代的 iPad Air 和 iPad mini,因為它們的 GPU 和分辨率均相同,但是延續這個思路其實是有很多解決方案的,比如大家可以研究下這兩個設備的話筒和喇叭個數,而這個數量也是可以通過 JS 獲取的 :P

完整的測試代碼

<html>  <head>    <title>Mobile Device Example</title>    <script src="./device.js"></script>  </head>  <head>    <h1>GPU: <script>document.write(MobileDevice.getGlRenderer());</script></h1>    <h1>Device Models: <script>document.write(MobileDevice.getModels().join(' or '));</script></h1>  </head></html>            
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 宜兰县| 会东县| 沈丘县| 汝州市| 正宁县| 休宁县| 嘉兴市| 宜州市| 广宁县| 二手房| 南陵县| 柘荣县| 荆门市| 武邑县| 洱源县| 邵东县| 文成县| 达日县| 綦江县| 长泰县| 赞皇县| 永州市| 清河县| 郴州市| 韩城市| 沧州市| 溧阳市| 济宁市| 夏河县| 大同市| 车致| 墨脱县| 金塔县| 镇原县| 乃东县| 新乡市| 隆子县| 东乡| 蚌埠市| 襄樊市| 北流市|