Как определить, работает ли браузер Chrome с помощью jQuery?
У меня есть небольшая проблема с функцией, работающей в chrome, которая работает правильно в Safari, как в браузерах webkit...
Мне нужно настроить переменную в функции для Chrome, но не для Safari.
К сожалению, я использовал это, чтобы определить, является ли это браузером веб-браузера:
if ($.browser.webkit) {
Но мне нужно обнаружить:
if ($.browser.chrome) {
Можно ли написать аналогичный оператор (рабочая версия выше)?
Ответы
Ответ 1
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
if($.browser.chrome){
............
}
UPDATE: (от 10x до @Mr. Bacciagalupe)
jQuery удалил $.browser
из 1.9 и их последний выпуск.
Но вы все равно можете использовать $.browser как автономный плагин, найденный здесь
Ответ 2
if(/chrom(e|ium)/.test(navigator.userAgent.toLowerCase())){
alert('I am chrome');
}
Ответ 3
Пользователь Endless прав,
$.browser.chrome = (typeof window.chrome === "object");
лучше всего обнаружить браузер Chrome с помощью jQuery.
Если вы используете IE и добавили GoogleFrame в качестве плагина, то
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
будет рассматриваться как браузер Chrome, потому что плагин GoogleFrame изменяет свойство навигатора и добавляет в него хром-рамку.
Ответ 4
Этот вопрос уже обсуждался здесь: JavaScript: как узнать, является ли браузер пользователя Chrome?
Пожалуйста, попробуйте следующее:
var isChromium = window.chrome;
if(isChromium){
// is Google chrome
} else {
// not Google chrome
}
Но более полным и точным ответом было бы это, поскольку IE11, IE Edge и Opera также вернут true
для window.chrome
Итак, используйте ниже:
// please note,
// that IE11 now returns undefined again for window.chrome
// and new Opera 30 outputs true for window.chrome
// and new IE Edge outputs to true now for window.chrome
// so use the below updated condition
var isChromium = window.chrome,
vendorName = window.navigator.vendor,
isOpera = window.navigator.userAgent.indexOf("OPR") > -1,
isIEedge = window.navigator.userAgent.indexOf("Edge") > -1;
if(isChromium !== null
&& isChromium !== undefined
&& vendorName === "Google Inc."
&& isOpera == false
&& isIEedge == false) {
// is Google chrome
} else {
// not Google chrome
}
Над сообщениями советуем использовать jQuery.browser. Но API jQuery рекомендует не использовать этот метод.. (см. DOCS в API). И заявляет, что его функциональность может быть перенесена в поддерживаемый командой плагин в будущей версии jQuery.
API jQuery рекомендует использовать jQuery.support
.
Причина в том, что "jQuery.browser" использует агент пользователя, который может быть подделан, и на самом деле он устарел в более поздних версиях jQuery. Если вы действительно хотите использовать $.browser.. Вот ссылка на автономный плагин jQuery, так как он был удален из jQuery версии 1.9.1. https://github.com/gabceb/jquery-browser-plugin
Лучше использовать обнаружение объектов объектов вместо обнаружения браузера.
Также, если вы используете инспектор Google Chrome и переходите на вкладку консоли. Введите "окно" и нажмите "Enter". Затем вы сможете просмотреть свойства DOM для "оконного объекта". Когда вы разрушаете объект, вы можете просмотреть все свойства, в том числе свойство "chrome".
Надеюсь, это поможет, хотя вопрос был связан с jQuery. Но иногда прямой javascript более прост!
Ответ 5
userAgent можно изменить. для более надежной, используйте глобальную переменную, указанную хром
$.browser.chrome = (typeof window.chrome === "object");
Ответ 6
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
Ответ 7
Хотя это не JQuery, я сам использую jquery, но для обнаружения браузера я несколько раз использовал script на эту страницу. Он обнаруживает все основные браузеры, а затем некоторые. Работа в значительной степени все сделано для вас.
Ответ 8
К сожалению из-за последнего обновления Opera !!window.chrome
(и других тестов на объекте окна), когда тестирование в Opera возвращает true.
Conditionizr позаботится об этом для вас и решает проблему Opera:
conditionizr.add('chrome', [], function () {
return !!window.chrome && !/opera|opr/i.test(navigator.userAgent);
});
Я бы предложил использовать его, поскольку ни одно из вышеперечисленных действий не является действительным.
Это позволяет:
if (conditionizr.chrome) {...}
Conditionizr заботится о других обнаружениях браузера и намного быстрее и надежнее, чем jQuery hacks.
Ответ 9
В качестве быстрого добавления, и я удивлен, что никто не думал об этом, вы могли бы использовать оператор in
:
"chrome" in window
Очевидно, что это не использование JQuery, но я полагал, что поместил бы его с тех пор, как он был удобен для времен, когда вы не используете какие-либо внешние библиотеки.
Ответ 10
Когда я тестирую ответ @IE, я всегда "правдивый". Лучший способ - это то, что работает также @IE:
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
Как описано в этом ответе:
fooobar.com/info/44016/...