Могу ли я использовать полифилл «один подходит всем», не ломая новые браузеры?

1

Я использую OpenLayers в проекте. Чтобы поддерживать пользователей со старыми браузерами, необходимо использовать Polyfills для requestAnimationFrame, Element.prototype.classList и URL.

Сам OpenLayers предлагает использовать службу Polyfill.io. Это показано в одном из своих примеров.

Это потребовало бы, чтобы я загрузил внешний URL-адрес (https://cdn.polyfill.io/v2/polyfill.min.js?features=requestAnimationFrame,Element.prototype.classList,URL) в пользовательские браузеры. Служба просматривает пользовательский агент браузера и дает ему Polyfill, если браузер старый, иначе этот файл просто пуст. Конечно, запуск кода, размещенного в другом месте, - это поток безопасности, за который я не хочу отвечать, поэтому я бы предпочел бы сам себя.

Служба Polyfill.io доступна для работы локально, но для этого мне нужно будет запустить сервер. Я бы предпочел не делать этого.

Вместо этого я хотел бы обслуживать статический JS файл для всех. Мои проблемы:

  1. Это возможно? Могу ли я обслуживать один и тот же полиполк для каждого старого браузера или делать разные старые браузеры, требующие различного полина?
  2. Будет ли это нарушать новые браузеры? Как я могу избежать этого?
  3. Будет ли это огромный файл?

Я очень ценю вашу помощь.

  • 0
    Я думаю, что это отличный вопрос, но сфера его действия очень широка и может привести к очень самоуверенным ответам. Тем не менее Kuddos
Теги:
web
openlayers
openlayers-3
polyfills

1 ответ

1

Общий ответ, не специально предназначенный для или .

Хороший письменный полиполк всегда должен начинаться с проверки того, доступен ли метод/объект/функция. Если да, не делайте ничего, если не добавляете.

Используется во всех старых браузерах, и вам нужно сделать некоторые исследования самостоятельно. Конечно, старая версия Netscape Navigator не сможет обрабатывать некоторые или все полиполки, потому что JavaScript является живым языком. В общем, вы хотите иметь возможность обслуживать все: от IE7 до Edge, Safari, Opera, Chrome и Firefox. И предпочтительно версия, которая начала придерживаться стандартов W3C.

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

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

В заключение: Полиполк никогда не должен пытаться заменить уже существующую функцию и - если она написана правильно - должна использоваться в любом браузере. Если polyfill не может быть выполнен из-за отсутствия зависимостей, он должен уведомить программиста во время отладки или лучше предоставить необходимую документацию.


В своей документации polyfill.io сообщает следующее:

Мы тестируем поддержку браузера с набором тестов для каждой функции. Браузер считается совместимым только в том случае, если он проходит все тесты, поэтому это достаточно всеобъемлющий тест, а не наивный признак функции. Чтобы просмотреть набор тестов для функции в браузере, который вы используете прямо сейчас, нажмите ссылку "Тесты" в списке функций. Результаты, приведенные ниже, создаются с использованием браузеров, размещенных в браузере.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню