Я хочу выполнить функцию, если userAgent - GoogleBot - PullRequest
1 голос
/ 26 марта 2020

Я пытаюсь выполнить некоторый код, если это сканер. В частности, Googlebot. Вот как я это делаю, но я чувствую, что есть более чистый путь.

Я видел несколько постов, которые содержали решения регулярных выражений, но ответы не давали объяснений. Я не использую код, который я не понимаю.

let agent = window.navigator.userAgent.indexOf("Googlebot") != -1;
if(agent) {
//DO Code
}  

Заранее спасибо, друзья.

1 Ответ

0 голосов
/ 26 марта 2020

Ваш код будет работать, но использование indexOf - более старый, менее читаемый подход. Кроме того, использование let здесь вводит в заблуждение, поскольку let позволяет устанавливать изменяемые значения, в отличие от const.

. Правильный способ сделать это будет -

const isGooglebot = window.navigator.userAgent.includes("Googlebot");

if (isGooglebot) {
  // some code
}


Пояснение

  1. Мы объявляем постоянную переменную с именем isGooglebot
  2. Затем мы получаем доступ к строке window.navigator.userAgent (которая совместима во всех браузерах) и проверьте, содержит ли он строку "Googlebot", взятую из Google Обзор Google Crawlers (ищите "Googlebot")

От MDN -

Заголовок запроса User-Agent является характерной c строкой, которая позволяет серверам и сетевым партнерам идентифицировать приложение, операционную систему, поставщика и / или версию запрашивающего пользовательского агента

Мы используем String.prototype.includes , который используется для определения, включен ли фрагмент текста в определенную строку.

Мы используем includes, а не contains, поскольку String.prototype.contains устарело. Был конфликт имен между Firefox и MooTools. contains был удален в Firefox 48 .

...