Discourse не отображает всю страницу на старых iPad

Я получил сообщение от двух разных пользователей моего форума о том, что сайт невозможно использовать: на их iPad’ах (один из них iPad mini 2; возраст второго мне неизвестен) ничего не отображается, кроме заголовка темы.

Я попросил одного из пользователей проверить сайт в безопасном режиме, но проблема осталась.

Похоже, эта проблема возникла в последние несколько дней (я недавно обновил Discourse). Возможно, это вызвано несовместимостью браузера?

https://se23.life/t/cant-open-topics-suddenly/13677?u=chrisbeach

Возможная связанная ошибка в логе:

### Сообщение

TypeError: Object.values is not a function. (In 'Object.values(k)', 'Object.values' is undefined) Url: https://se23.life/assets/application-40c596cdf7e29282f09e31f3627440b02ba54ef8bec1f65c72732b78dddeadb2.js Line: 1 Column: 2302964 Window Location: https://se23.life/t/hat-stolen-from-forest-hill-christmas-tree-now-replaced/13615/16

### Обратная трассировка

html@https://se23.life/assets/application-40c596cdf7e29282f09e31f3627440b02ba54ef8bec1f65c72732b78dddeadb2.js:1:2302964 value@https://se23.life/assets/application-40c596cdf7e29282f09e31f3627440b02ba54ef8bec1f65c72732b78dddeadb2.js:1:2380769 s@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:142806 exports@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:142956 t@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:136443 t@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:136753 t@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:136753 t@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:136753 t@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:136753 t@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:136753 https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:138354 exports@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:138399 c@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:139468 o@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:139332 exports@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:138842 c@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:139468 o@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:139332 t@https://se23.life/assets/vendor-4681e47c140b5a5bea2bfb1fec89365858288a8ea0c21979c0167ad9b570ee3d.js:1:139608 rerenderWidget@https://se23.life/assets/application-40c596cdf7e29282f09e31f3627440b02ba54ef8bec1f65c72732b78dddeadb2.js:1:1070961 invoke@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:483463 flush@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:482460 flush@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:484479 _end@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:489914 end@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:486449 _run@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:490450 h@[native code] success@https://se23.life/assets/application-40c596cdf7e29282f09e31f3627440b02ba54ef8bec1f65c72732b78dddeadb2.js:1:228913 n@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:27779 fireWith@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:28543 l@https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:78782 https://se23.life/assets/ember_jquery-c2cca4a19fd4c70eabc95b010a6d7643955ec2a2251aeb1d70f625773eebea21.js:1:81099

### Окружение

hostname gbyk1-app
process_id 222
application_version e8beccdaa4eb36fd292de9cd77d59a0e0389c92f
HTTP_HOST se23.life
REQUEST_URI /logs/report_js_error
REQUEST_METHOD POST
HTTP_USER_AGENT Mozilla/5.0 (iPad; CPU OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A456 Safari/602.1
HTTP_ACCEPT */*
HTTP_REFERER https://se23.life/t/hat-stolen-from-forest-hill-christmas-tree-now-replaced/13615/16
HTTP_X_FORWARDED_FOR [redacted]
HTTP_X_REAL_IP [redacted]
params message TypeError: Object.values is not a function. (In 'Object.values(k)', 'Object.values' is undefined)
--- --- --- ---
--- ---
url https://se23.life/assets/application-40c596cdf7e29282f09e31f3627440b02ba54ef8bec1f65c72732b78dddeadb2
line 1
column 2302964
window_location https://se23.life/t/hat-stolen-from-forest-hill-christmas-tree-now-replaced/13615/16
stacktrace html@https://se23.life/assets/application-40c596cdf7e29282f09e31f3627440b02ba54ef8bec1f65c72732b78ddd
2 лайка

Они работают в безопасном режиме?

1 лайк

iPad Mini 2 выпущен в 2013 году, поэтому он уже довольно старый. Окончание его жизненного цикла пришлось на 2017 год.

4 лайка

Нет, в безопасном режиме это не работает

1 лайк

На моих mini 4 и 5 работает отлично: думаю, пришло время их партнёрам проявить щедрость на Рождество :wink:

1 лайк

Я полагаю, что это связано с тем, что полифил entries был перемещен в плагин для IE, cc @j.jaffeux

3 лайка

Да, Object.entries — это версия 10.3

Насколько мне известно, мы поддерживаем Safari 10+ и iOS 10+

4 лайка

Значит, есть плагин, который можно установить, чтобы решить эту проблему?

1 лайк

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

Когда мы создавали этот плагин несколько недель назад, мы перенесли всё, что было добавлено в ядро для IE11, внутрь этого плагина.

Файлы из этого плагина будут добавляться только при запросах от IE11, поэтому iOS 9 больше не работает.

Использование iOS 9 практически больше не отслеживается; оно, вероятно, значительно ниже 1% (в то время как IE11 находится на уровне 1%).

Тем не менее, мы можем сделать две простые вещи:

  • вернуть файл в ядро ещё на один год
  • также загружать полифилл для IE11 для iOS 10 и ниже; это хорошее решение, поскольку теперь мы можем загружать его условно, не затрагивая остальных.

Решение за вами, @codinghorror. Мне кажется, что нам следует прекратить поддержку этого, но я не против оставить её, если вы считаете, что это более разумно на данный момент.

9 лайков

Так уж сложилось: поддерживать сверхстарые и устаревшие устройства iOS вечно невозможно.

5 лайков