Javascript определяет, поддерживается ли нативный эмодзи - PullRequest
3 голосов
/ 21 октября 2019

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

Однако при поиске в Интернете я нашел только кого-то, кто использовал userAgent, чтобы проверить, поддерживается или нет emoji.
Например, приведенный ниже код взят из https://github.com/github/g-emoji-element/blob/master/emoji-detection.js,

export function isEmojiSupported(): boolean {
  const onWindows7 = /\bWindows NT 6.1\b/.test(navigator.userAgent)
  const onWindows8 = /\bWindows NT 6.2\b/.test(navigator.userAgent)
  const onWindows81 = /\bWindows NT 6.3\b/.test(navigator.userAgent)
  const onFreeBSD = /\bFreeBSD\b/.test(navigator.userAgent)
  const onLinux = /\bLinux\b/.test(navigator.userAgent)

  return !(onWindows7 || onWindows8 || onWindows81 || onLinux || onFreeBSD)
}

Хотя регулярное выражение может быть не идеальным, поскольку Firefox в Windows 7 поддерживает Emoji начиная с http://caniemoji.com/.

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

Так есть ли лучший способ, кроме использования userAgent, чтобы проверить, поддерживается ли Emoji?

1 Ответ

2 голосов
/ 21 октября 2019

Вместо того, чтобы пытаться обнаружить, я бы предложил загрузить шрифт со всеми глифами, которые вы хотите, и использовать font-display: swap в вашем CSS.

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

См. также: https://css -tricks.com / font-display-masses /

...