Как узнать браузер пользователя?

техническая поддержка по Construct 2

Сообщение Как узнать браузер пользователя?
» 31 май 2018, 13:54

В плагине Browser есть действие Browser.UserAgent, я использую его и переменная меняется на -

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/66.0.3359.170 Safari/537.36 OPR/53.0.2907.68

Как вывести только мой браузер и его версию отсюда? (Последнее название и цифры, но при этом нужно же еще учитывать что у каждого свой браузер и версия, и соответственно длина символов будет совершенно другой) Долго думал но так и не понял :unknown:
Спасибо.
Аватара пользователя

Участник
Сообщений: 95
Я тут с 22 июн 2017
Репутация 0 [ ? ]

Сообщение Как узнать браузер пользователя?
» 31 май 2018, 21:19

сперва попробуй узнавать то, каким по счёту идёт первое / в названии
затем всё после него подводи под int (на своём опыте выяснил, что такое обрезает текст, идущий в смесь с цифрами, но по умному (к примеру, из 24fdg43ff сделает 24)) , только я хз, как это буит работать с 66.0.3359.170
всё, что могу предложить
иди ко мне в дискорд :) - https://discord.gg/r5myd8p
Аватара пользователя

Участник
Сообщений: 529
Я тут с 14 сен 2016
Двиг: c2/3; bge(b-p);
Репутация 55 [ ? ]

Сообщение Как узнать браузер пользователя?
» 31 май 2018, 23:37

HITMAN писал(а):Последнее название и цифры

Эти буквы не определяют любой браузер, например, в хроме эта строка заканчивается на safari.

Вот на stackoverflow есть более универсальный пример:
https://stackoverflow.com/questions/984 ... ra-browser

который можно адаптировать для с2:
Изображение

В Set return value в функции добавь этот код:
Код: Выделить всё
Browser.ExecJS("
(function() {

// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0+ ""[object HTMLElementConstructor]""
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === ""[object SafariRemoteNotification]""; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1+
var isChrome = !!window.chrome && !!window.chrome.webstore;

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;

var r = undefined;
r = r || isOpera && 'opera';
r = r || isFirefox && 'firefox';
r = r || isSafari && 'safari';
r = r || isIE && 'ie';
r = r || isEdge && 'edge';
r = r || isChrome && 'chrome';
r = r || isBlink && 'blink';

return r;

}());
")


и функция будет возвращать текстовое именование браузера.
Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение
Аватара пользователя

Администратор
Сообщений: 1141
Я тут с 14 апр 2013
Откуда: Нижний Новгород
Репутация 355 [ ? ]

Сообщение Как узнать браузер пользователя?
» 01 июн 2018, 09:30

Piponga писал(а):
HITMAN писал(а):Последнее название и цифры

Эти буквы не определяют любой браузер, например, в хроме эта строка заканчивается на safari.

Вот на stackoverflow есть более универсальный пример:
https://stackoverflow.com/questions/984 ... ra-browser

который можно адаптировать для с2:
Изображение

В Set return value в функции добавь этот код:
Код: Выделить всё
Browser.ExecJS("
(function() {

// Opera 8.0+
var isOpera = (!!window.opr && !!opr.addons) || !!window.opera || navigator.userAgent.indexOf(' OPR/') >= 0;

// Firefox 1.0+
var isFirefox = typeof InstallTrigger !== 'undefined';

// Safari 3.0+ ""[object HTMLElementConstructor]""
var isSafari = /constructor/i.test(window.HTMLElement) || (function (p) { return p.toString() === ""[object SafariRemoteNotification]""; })(!window['safari'] || (typeof safari !== 'undefined' && safari.pushNotification));

// Internet Explorer 6-11
var isIE = /*@cc_on!@*/false || !!document.documentMode;

// Edge 20+
var isEdge = !isIE && !!window.StyleMedia;

// Chrome 1+
var isChrome = !!window.chrome && !!window.chrome.webstore;

// Blink engine detection
var isBlink = (isChrome || isOpera) && !!window.CSS;

var r = undefined;
r = r || isOpera && 'opera';
r = r || isFirefox && 'firefox';
r = r || isSafari && 'safari';
r = r || isIE && 'ie';
r = r || isEdge && 'edge';
r = r || isChrome && 'chrome';
r = r || isBlink && 'blink';

return r;

}());
")


и функция будет возвращать текстовое именование браузера.


Интересное решение, спасибо. Но а что если у пользователя Yandex или какой то другой браузер которого здесь нет? Мне же нужно точно знать чем он пользуется.
Аватара пользователя

Участник
Сообщений: 95
Я тут с 22 июн 2017
Репутация 0 [ ? ]

Сообщение Как узнать браузер пользователя?
» 01 июн 2018, 13:13

HITMAN писал(а):Но а что если у пользователя Yandex или какой то другой браузер которого здесь нет?

Гуглить и таким же способом применять. Волшебного определения браузера по последним буквам нет, они все дают разную информацию в разных позициях, так или иначе надо делать проверки для каждого.
Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение Изображение
Аватара пользователя

Администратор
Сообщений: 1141
Я тут с 14 апр 2013
Откуда: Нижний Новгород
Репутация 355 [ ? ]

Сообщение Как узнать браузер пользователя?
» 01 июн 2018, 21:35

Браузер может выдавать совершенно произвольный UserAgent, имеет право. Не делайте очередной костыль.
Определение браузера и его версии на JavaScript
Аватара пользователя

Reficul
Сообщений: 609
Я тут с 02 ноя 2017
Репутация 238 [ ? ]



Вернуться в Вопрос-Ответ по Construct 2

Сейчас эту тему просматривают

Зарегистрированные пользователи: нет зарегистрированных пользователей

Наверх