Каковы недостатки настройки страницы.ClientTarget = "uplevel" для всех страниц?

недавно мы столкнулись с проблемами, потому что с момента выпуска Firefox 4 данные ScrollPosition никогда не отправляются пользователям Firefox. Это вызвано файлом browsercaps, указывающим только возможности для Firefox 3.X. Одним из решений этой проблемы является обновление файла browsercaps на каждом сервере и в любое время выпускается новая версия Firefox (или Chrome, или что-то еще). Ну, прежде чем у нас даже была возможность решить эту проблему, мы уже на Firefox 6, и это просто похоже на гонку что мы не хотим продолжать работать.

оказывается, что страница настроек.ClientTarget = "uplevel" на главной странице (так, для всего, безусловно) исправляет нашу конкретную проблему Firefox ScrollPosition. Каковы негативные последствия этого решения? Будут ли пользователи браузеров Android иметь худший опыт? Они просто собираются загружать ненужно большие страницы сейчас? Есть причина, по которой мы не должны этого делать?

документация для Страница.ClientTarget довольно страшно:

uplevel, который определяет возможности браузера, эквивалентные интернету Explorer 6.0.

.. и кажется неправильным, или по крайней мере вводящими в заблуждение. Похоже, это было написано в то время, когда IE6 был самым способным браузером. Действительно ли" uplevel "означает" предположим, что браузер способен на все" или"относиться к нему, как к IE6"?

3 ответов


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


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

вы также можете занести в черный список все версии браузера, например, ни одна версия IE не поддерживает функцию X). это требует от вас обновить черный список, как только IE поддерживает функцию X.

обновления браузера не должны нарушать эту схему.


это не ответ на вопрос "каковы недостатки", но:

вы можете использовать регулярные выражения в обнаружении версии браузера в файлах browsercaps.

например, 13 ноября 2011 года корпорация Майкрософт выпустила обновление для ASP.NET 4.0, который добавил IE10 в список uplevel (и исправил ошибку в ie.browser файл, расположенный в \Windows\Microsoft.NET\Framework\v4.0.30319\Config\Browsers). У них было регулярное выражение, которое проверялось только для однозначной основной версии, но после исправления любой версии IE >= 6 будет считаться uplevel.

до изменения:

<capability name="majorversion" match="[6-9]" />

после изменения:

<capability name="majorversion" match="[6-9]|[1-9]\d+" />

Я предполагаю, что вы больше не сталкиваетесь с этой проблемой, потому что, по крайней мере, с 26 октября 2011 года директива firefox также использует регулярное выражение для обнаружения как версии uplevel >= 3: (из )

<browser id="Firefox3" parentID="Firefox">
    <identification>
        <capability name="majorversion" match="^[3-9]|[1-9]\d+" />
    </identification>

    <capabilities>
        <capability name="javascriptversion"               value="1.8" />
        <capability name="supportsMaintainScrollPositionOnPostback" value="true" />
    </capabilities>
</browser>

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