15 удивительных трюков, которые вы можете сделать с помощью простого JavaScript

15 удивительных трюков, которые вы можете сделать с помощью простого JavaScript
15 удивительных трюков, которые вы можете сделать с помощью простого JavaScript

Давайте рассмотрим некоторые из удивительных трюков, которые вы могли бы сделать с помощью ванильного JavaScript.

Поиск сведений об операционной системе

Знаете ли вы, что можно найти сведения об операционной системе с помощью простого JS?

Объект window.navigator содержит информацию о параметрах операционной системы браузера посетителя. Некоторые свойства операционной системы доступны в разделе "Свойства платформы".

Вы можете использовать приведенный ниже фрагмент для получения подробной информации.

console.log(navigator.platform);

Предотвращение обновления страницы с помощью void (0)

Void(0) используется для предотвращения обновления страницы. Это будет полезно для устранения нежелательных эффектов, потому что оно вернет неопределенное примитивное значение.

Он обычно используется в HTML-документах, использующих элементы привязки.

Например, когда вы нажимаете на ссылку, браузер загружает новую страницу или обновляет ту же страницу. Этого не произойдет.

Например, ссылка ниже выдает предупреждение без перезагрузки страницы.

<a href="JavaScript:void(0);" onclick="alert('Well done!')">
  Click Me!
</a>

Перенаправление новой страницы

В ванильном JavaScript вы можете перенаправить пользователя на новую страницу, установив href свойство location объекта, которое является свойством window объекта.

Синтаксис будет следующим:

function redirect() {
  window.location.href = "newPage.html";
}

 Когда вы вызываете функцию перенаправления, браузер переходит на newPage.html.

Небольшое дополнительное объяснение.

window: Относится к окну браузера.
location: Свойство объекта window, которое содержит информацию о текущем URL.
href: Свойство объекта location, содержащее полный URL-адрес. Используя это, вы можете изменить URL-адрес, в результате чего браузер загрузит новую страницу.

Проверка электронных писем

Всякий раз, когда я хочу подтвердить электронное письмо, я всегда ищу идеальный фрагмент.

Вы также наверняка видели функции по умолчанию в библиотеках для проверки электронной почты, например, в Zod.

Следующий фрагмент проверяет любое электронное письмо с полной логикой.

function validateEmail(email) {
  var re =
    /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
  return re.test(String(email).toLowerCase());
}

 
Если вам нужен более простой JavaScript, который также принимает символы Unicode. Вы можете использовать приведенный ниже!

function validateEmailUnicode(email) {
  var re =
    /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
  return re.test(String(email).toLowerCase());
}

Эта упрощенная версия соответствует большинству действительных адресов электронной почты, избегая при этом некоторых подводных камней, связанных с чрезмерно сложными регулярными выражениями.

Получаем текущий URL

Да, это возможно только с помощью JavaScript!

Вы можете использовать window.location.href как для получения текущего URL, так и для обновления URL.

console.log("location.href", window.location.href); // Returns full URL

 
Вы также можете использовать document.URL только для чтения (не может использоваться для перехода по новому URL), но в Firefox с этим решением проблемы.

console.log("document.URL", document.URL); // Returns full URL (Read-only)

 
Это может работать не во всех браузерах, особенно в старых версиях Firefox (онлайн-источники).

Итак, window.location.href обычно предпочтительнее как для чтения, так и для обновления URL.

Определение мобильного браузера с помощью регулярных выражений

Вы можете использовать регулярное выражение, которое возвращает значение true или false в зависимости от того, просматривает ли пользователь веб-страницы с мобильного устройства. ВАУ!

window.mobilecheck = function () {
  var mobileCheck = false;
  (function (a) {
    if (
      /(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(
        a
      ) ||
      /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(
        a.substr(0, 4)
      )
    )
      mobileCheck = true;
  })(navigator.userAgent || navigator.vendor || window.opera);
  return mobileCheck;
};

 
Интересно, кто вообще написал этот фрагмент :)

Определение мобильного браузера без регулярных выражений

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

 

function detectmob() {
  if (
    navigator.userAgent.match(/Android/i) ||
    navigator.userAgent.match(/webOS/i) ||
    navigator.userAgent.match(/iPhone/i) ||
    navigator.userAgent.match(/iPad/i) ||
    navigator.userAgent.match(/iPod/i) ||
    navigator.userAgent.match(/BlackBerry/i) ||
    navigator.userAgent.match(/Windows Phone/i)
  ) {
    return true;
  } else {
    return false;
  }
}


Это действительно выглядит намного чище и понятнее.

Обнаружение отключенного JavaScript на странице.
Вы можете использовать тег <noscript>, чтобы определить, отключен JavaScript или нет.

Блок кода внутри <noscript> выполняется, когда JavaScript отключен, и обычно используется для отображения альтернативного контента, когда страница генерируется на JavaScript.

<script type="javascript">
    // JS related code goes here
</script>
<noscript>
    <a href="next_page.html?noJS=true">JavaScript is disabled on the page. Enable it asap!</a>
</noscript>


Как получить метаданные модуля

Вы можете использовать import.meta object, который представляет собой мета-свойство, предоставляющее модулю JavaScript контекстно-зависимые метаданные.

Он содержит информацию о текущем модуле, такую как URL модуля. В браузерах вы можете получить другие метаданные, чем в NodeJS.

<script type="module" src="welcome-module.js"></script>;
console.log(import.meta); // { url: "file:///home/user/welcome-module.js" }

Смещение часового пояса от даты

Вы можете использовать getTimezoneOffset метод объекта date . Этот метод возвращает разницу в часовых поясах в минутах от текущей локали (настройки хост-системы) до UTC.

var offset = new Date().getTimezoneOffset();
console.log(offset); // -330

#Вывод

Установка курсора в положение ожидания.
Курсор может быть установлен в положение ожидания в JavaScript с помощью свойства с именем cursor. Давайте выполним это с помощью приведенной ниже функции.

function myFunction() {
  window.document.body.style.cursor = "wait";
}

Вы можете использовать это в тех случаях, когда страница загружается.

Чтобы получить статус флажка

Вы можете применить свойство checked к выбранному флажку в DOM. Если значение равно true, это означает, что флажок установлен, в противном случае это означает, что он снят.

Например, приведенный ниже HTML-элемент checkbox можно проверить с помощью javascript, как показано ниже:

<input type="checkbox" id="checkboxname" value="Agree" /> Agree the
conditions<br />

console.log(document.getElementById(‘checkboxname’).checked); // true or false

Добавление CSS в сообщения консоли

Да, вы даже можете применять стили CSS к сообщениям консоли, аналогичным тексту HTML на веб-странице. Действительно потрясающе :)

console.log(
  "%c The text has a purple color, with large font and white background",
  "color: purple; font-size: x-large; background: white"
);

#Вывод

Примечание: К сообщениям консоли можно применять все стили CSS.
 
Отключите щелчок правой кнопкой мыши на веб-странице.
Щелчок правой кнопкой мыши на странице можно отключить, вернув значение false из oncontextmenu атрибута элемента body.

<body oncontextmenu="return false;"></body>

Захват кнопки возврата браузера

Сначала я даже не верил, что это возможно.

Вы можете сделать это с помощью beforeunload события, которое запускается, когда окно, документ и его ресурсы вот-вот будут выгружены. Это событие полезно для предупреждения пользователей о потере текущих данных и обнаружении события кнопки возврата.

 window.addEventListener('beforeunload', () => {
   console.log('Clicked browser back button');
 });

Группировка и вложение выходных данных консоли

console.group() Можно использовать для группировки связанных сообщений журнала, а также для console.groupEnd() закрытия группы.

Вы также можете объединять группы, что позволяет вам выводить сообщения иерархически.

Например, если вы регистрируете данные пользователя:

console.group("User Details");
console.log("name: Sudheer Jonna");
console.log("job: Software Developer");

// Nested Group
console.group("Address");
console.log("Street: Commonwealth");
console.log("City: Los Angeles");
console.log("State: California");

// Close nested group
console.groupEnd();

// Close outer group
console.groupEnd();

#Вывод

Вы также можете использовать console.groupCollapsed() вместо console.group(), если хотите, чтобы группы были свернуты по умолчанию.

Понравилась статья?
Будем признательны, если поделитесь в соцсетях или мессенджерах, а также присоединитесь к нашей группе Вконтакте. Будет интересно!

Другие статьи по теме:

JavaScript: разоблачение регулярных выражений
JavaScript: разоблачение регулярных выражений

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

Многие разработчики пытаются понять их с помощью плохих руководств или старых книг, и когда они разочаровываются, они предпочитают игнорировать их до конца своей карьеры.

33 Концепции JavaScript, которые должен знать каждый разработчик
33 Концепции JavaScript, которые должен знать каждый разработчик

Как вы думаете, насколько хорошо вы знаете JavaScript? Вы, вероятно, знаете, как писать функции, понимать простые алгоритмы и даже можете написать класс. Но знаете ли вы, что такое типизированный массив?

JavaScript: сила замыканий
JavaScript: сила замыканий

JavaScript - это универсальный язык программирования, который допускает широкий спектр методов кодирования, включая одну из самых неправильно понимаемых функций из всех: замыкания.

Для верстальщиков. Украшаем код JavaScript
Для верстальщиков. Украшаем код JavaScript

Те из вас, кто верстает сайты, прекрасно знают, как удобно читать код, когда он свёрстан в удобочитаемом виде. Это упрощает и его понимание и визуальное выявление ошибок до запуска.

Динамические элементы JavaScript для безостановочной загрузки сценариев
Динамические элементы JavaScript для безостановочной загрузки сценариев

Сценарии JavaScript блокируют загрузку файлов, следующих за ними. Но имеется несколько приемов, предотвращающих это…

Как устанавливать, получать и обновлять файлы cookie с помощью JavaScript
Как устанавливать, получать и обновлять файлы cookie с помощью JavaScript

Файлы cookie — это небольшие фрагменты данных, хранящиеся в браузере клиента и часто используемые для управления сеансами, пользовательских предпочтений и отслеживания.

Мы используем cookie-файлы, чтобы получить статистику, которая помогает нам обеспечивать вас лучшим контентом. Вы можете прочитать подробнее о cookie-файлах или изменить настройки браузера. Отключение cookie-файлов может привести к неполадкам в работе сайта. Продолжая пользоваться сайтом без изменения настроек, вы даете согласие на использование ваших cookie-файлов. Это совершенно безопасно!