Как определить, является ли браузер Chrome с помощью jQuery?
у меня есть небольшая проблема с функцией, работающей в chrome, которая работает правильно в Safari, обоих браузерах webkit...
мне нужно настроить переменную в функции для Chrome, но не для Safari.
к сожалению, я использовал это, чтобы определить, является ли это браузером webkit:
if ($.browser.webkit) {
но мне нужно, чтобы обнаружить:
if ($.browser.chrome) {
есть ли способ написать аналогичный оператор (рабочая версия выше)?
10 ответов
$.browser.chrome = /chrom(e|ium)/.test(navigator.userAgent.toLowerCase());
if($.browser.chrome){
............
}
обновление:(10x к @Bacciagalupe г)
jQuery удалил $.browser
С 1.9 и их последний релиз.
но вы все равно можете использовать $.браузер в качестве плагина, нашел здесь
пользователь Endless прав,
$.browser.chrome = (typeof window.chrome === "object");
код лучше всего обнаружить браузер Chrome с помощью jQuery.
Если вы используете IE и добавили GoogleFrame в качестве плагина, то
var is_chrome = /chrome/.test( navigator.userAgent.toLowerCase() );
код будет рассматриваться как браузер Chrome, потому что плагин GoogleFrame изменяет свойство navigator и добавляет chromeframe внутри него.
этот вопрос уже обсуждался здесь: 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.браузер. но API jQuery рекомендует не использовать этот метод.. (видеть документы в API). И заявляет, что его функциональность может быть перемещена в поддерживаемый командой плагин в будущем выпуске jQuery.
API jQuery рекомендует использовать jQuery.support
.
причина в том, что в jQuery.браузер " использует пользовательский агент, который может быть подделан, и он фактически устарел в более поздних версиях jQuery. Если вы действительно хотите использовать $.браузер.. Вот ссылка на автономный плагин jQuery, так как он был удален из jQuery версия 1.9.1. https://github.com/gabceb/jquery-browser-plugin
лучше использовать функцию обнаружения объектов вместо обнаружения браузера.
также, если вы используете инспектор Google Chrome и перейдите на вкладку консоли. Введите "window" и нажмите enter. Затем вы сможете просмотреть свойства DOM для объекта 'окна'. При сворачивании объекта можно просмотреть все свойства, включая свойство "chrome".
Я надеюсь, что это помогает, даже хотя вопрос был в том, как поступить с jQuery. Но иногда прямой javascript более прост!
userAgent можно изменить. для большей надежности используйте глобальную переменную, указанную chrome
$.browser.chrome = (typeof window.chrome === "object");
хотя это не Jquery, я сам использую jquery, но для обнаружения браузера я использовал скрипт на на этой странице несколько раз. Он обнаруживает все основные браузеры, а потом некоторые. Работа в значительной степени сделана для вас.
к сожалению, из-за последнего обновления Opera !!window.chrome
(и другие тесты на объекте window) при тестировании в Opera возвращает true.
Conditionizr заботится об этом для вас и решает проблему Opera:
conditionizr.add('chrome', [], function () {
return !!window.chrome && !/opera|opr/i.test(navigator.userAgent);
});
я настоятельно рекомендую использовать его, поскольку ни один из вышеперечисленных теперь не действителен.
Это позволяет делать:
if (conditionizr.chrome) {...}
Conditionizr заботится о другом браузере, обнаруживает и гораздо быстрее и надежнее, чем с jQuery хаки.
в качестве быстрого добавления, и я удивлен, что никто не подумал об этом, вы можете использовать in
оператор:
"chrome" in window
очевидно, что это не использует JQuery, но я решил, что положу его, так как это удобно для случаев, когда вы не используете внешние библиотеки.
когда я тестирую ответ @IE, я всегда получаю "true". Лучший способ-это то, что работает также @IE:
var isChrome = /Chrome/.test(navigator.userAgent) && /Google Inc/.test(navigator.vendor);
как описано в этот ответ: https://stackoverflow.com/a/4565120/1201725