Отображение информации об устройстве с помощью JS & jquery на мобильном телефоне (или JSON API) - PullRequest
0 голосов
/ 13 апреля 2020

Используя это:

data:text/html, <!-- ignore on desktop! -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<h3>Device info</h3>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jqtree/1.4.6/tree.jquery.js" type="text/javascript">
</script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/device.js/0.2.7/device.min.js"></script>

<style>
    .fieldName {
        display: inline-block;
        line-height: 140%;
        font-weight: bold
    }
</style>
<div id="idResult"></div>

<script>
    function getInfo() {
        var _str = "";
        var _list = [];
        _list.push("class:device:desktop");
        _list.push("class:device:tablet");
        _list.push("class:device:mobile");
        _list.push("type:device:ipad");
        _list.push("type:device:iphone");
        _list.push("type:device:ipod");
        _list.push("type:device:androidPhone:Android Phone");
        _list.push("type:device:androidTablet:Android Tablet");
        _list.push("type:device:windowsPhone:Windows Phone");
        _list.push("type:device:windowsTablet:Windows Tablet");
        _list.push("type:device:blackberryPhone:Blackberry Phone");
        _list.push("type:device:blackberryTablet:blackberry Tablet");
        _list.push("type:device:fxosPhone:Firefox OS Phone");
        _list.push("type:device:fxosTablet:Firefox OS Tablet");
        _list.push("type:device:meego:MeeGo");
        _list.push("type:device:television:Television");
        _list.push("user-agent:navigator:userAgent:User agent");
        _list.push("platform:navigator:platform");
        _list.push("screen width:screen:width");
        _list.push("screen height:screen:height");
        _list.push("orientation:device:landscape");
        _list.push("orientation:device:portrait");
        _list.push("device pixel ratio:window:devicePixelRatio");
        for (var _i in _list) {
            var _spl = _list[_i].split(":");
            var _field = _spl[0];
            var _func = _spl[1];
            var _val = _spl[2];
            var _add = _spl[3];
            var _value = _val;
            if (_add) {
                _value = _add;
            }
            if (_func == 'device') {
                if (window[_func][_val]()) {
                    _str += '<div class="fieldName">' + _field + ':</div> ' + _value + '<br>';
                }
            } else {
                _str += '<div class="fieldName">' + _field + ':</div> ' + window[_func][_val] + '<br>';
            }
        }
        return _str;
    }
    try {
        document.getElementById('idResult').innerHTML = getInfo();
    } catch (e) {
        document.getElementById('idResult').innerHTML = e;
    }
</script>

Я получаю полезную информацию об устройстве. Однако мне нужна только определенная информация.

Так что я уменьшил это до:

data:text/html,<meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"/>

<script src="https://cdnjs.cloudflare.com/ajax/libs/device.js/0.2.7/device.min.js"></script>

<style> .fieldName{display:inline-block;line-height:140%;font-weight:bold} </style>  <div id="idResult"></div> 

<script>
    function getInfo() {
    var _str = "";
    var _list = [];
    _list.push("class:device:desktop");
    _list.push("class:device:tablet");
    _list.push("class:device:mobile");
    _list.push("type:device:ipad");
    _list.push("type:device:iphone");
    _list.push("type:device:ipod");
    _list.push("type:device:androidPhone:Android Phone");
    _list.push("type:device:androidTablet:Android Tablet");
    _list.push("type:device:windowsPhone:Windows Phone");
    _list.push("type:device:windowsTablet:Windows Tablet");
    _list.push("type:device:blackberryPhone:Blackberry Phone");
    _list.push("type:device:blackberryTablet:blackberry Tablet");
    _list.push("type:device:fxosPhone:Firefox OS Phone");
    _list.push("type:device:fxosTablet:Firefox OS Tablet");
    _list.push("type:device:meego:MeeGo");
    for (var _i in _list) {
        var _spl = _list[_i].split(":");
        var _field = _spl[0];
        var _func = _spl[1];
        var _val = _spl[2];
        var _add = _spl[3];
        var _value = _val;
        if (_add) {
            _value = _add;
        }
        if (_func == 'device') {
            if (window[_func][_val]()) {
                _str += _value;
            }
        }
    }
    return _str;
}
try {
    document.getElementById('idResult').innerHTML = getInfo();
} catch (e) {
    document.getElementById('idResult').innerHTML = e;
}
</script>

Когда это запускается на мобильном устройстве, я получаю «mobile Android Phone», конечно Я хочу только "Android Телефон". Я на самом деле не знаю JS, я просто веду себя логично, я удалил различные части, такие как _str, но, похоже, не могу избавиться от "мобильного".

Любой совет (или альтернатива варианты) приветствуется.

Если вам интересно, что я пытаюсь сделать, я хочу получить данные об устройстве, но не могу получить доступ к базовому коду Android (с помощью компоновщика приложений) так что это должно быть через HTTP-браузер или (что было бы проще) через API.

Спасибо.

...