Когда мы говорим о совместимости с браузером, большую часть времени мы определяем его как список минимальной версии браузеров, которые приложение будет поддерживать. например:.
IE9 +, Firefox 25+, Chrome 32+ и т.д.
При тестировании совместимости мы обычно тестируем базовую линию и последнюю версию. Если мы хотим сделать его более обширным, мы можем использовать такие инструменты, как SauceLabs, для проверки всех версий между ними.
Мой вопрос не в том, можем ли мы проверить совместимость, но скорее должны или мы должны рассмотреть, какая версия браузеров должна поддерживаться.
Например, у меня возникла проблема с aurelia-polyfills
.
Библиотека не загружается в Firefox 35 в строке (function(o, s) { ... }(Object, Symbol))
с помощью Symbol is not defined
.
Этот код отлично работает в Firefox 29 и в последних версиях (54). Я не знаю, сколько версий до 35 и после этого могло возникнуть.
Эта проблема, IMO, больше связана с Firefox и меньше с библиотекой, так как она должна разыгрывать Symbol
как undefined
, и пусть код проверяет и обрабатывает ее должным образом. Это похоже на то, что IE не обрабатывает ключевые слова, такие как enum
правильно.
Теперь вопрос в том, должен ли это рассматривать как ошибку для библиотеки или библиотеки, должен объявить, что эта промежуточная версия Firefox не поддерживается?
С одной стороны, имеет смысл исключить эту версию, поскольку это "неправильно" в браузере. Автор библиотеки не может принять побои на любые и все проблемы, сделанные браузером. Особенно в наши дни новые выпуски браузеров гораздо более часты по сравнению с прошлым. Некоторые ошибки ограничены.
С другой стороны, это именно то, о чем "совместимость с браузером", и нужно ее обрабатывать. Автор библиотеки не может игнорировать их, потому что они используются клиентом. Но в этом конкретном случае это просто не сработает, потому что всякий раз, когда доступ к Symbol
приведет к сбою системы.
Другим моментом является то, что когда таблица совместимости браузера обновляется, она будет "сдвигаться" к тем версиям, у которых есть проблема.
Это означает либо обновление таблицы совместимости с "IE9 +, Firefox 25+,..." до "IE10 +, Firefox 35 +,..." и "WTF", либо принуждение иметь гораздо более узкую таблицу, например. "IE10 +, Firefox 52 +,...".
Я думаю, что нам нужно либо укусить пулю, либо продолжать поддерживать "все последние версии", либо оставить некоторые отверстия в таблице совместимости и поддерживать только "золотые" версии.
Что вы порекомендовали бы?
btw, я ничего не имею против Firefox и использую его только как пример.