Почему браузер осуществляет сниффинг не методических рекомендаций?

Используя пакет QnAMaker v3, на который вы ссылались, вы сможете самостоятельно контролировать тип и формат ответа. Добавляя, однако, много ответов, которые вы считаете подходящими в качестве вложений, и устанавливая тип вложения в Карусель.

Вы можете переопределить метод, который возвращает ответ пользователю в QnAMakerDialog, как показано ниже;

protected override async Task RespondFromQnAMakerResultAsync(IDialogContext context, IMessageActivity message, QnAMakerResults results)
        {
            if (results.Answers.Count > 0)
            {
                // build your response here adding card attachment for each answer
                // and set attachment type to carusel
                await context.PostAsync(response);
            }
        }
15
задан casperOne 19 January 2012 в 14:55
поделиться

4 ответа

Поскольку просто сниффинг агента пользователя (который является тем, что jQuery делает для заполнения $ .browser объект) не говорит Вам целую истину.

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

Это не могло бы казаться слишком большим из проблемы, но это - все еще плохая практика.

И да, я - сниффер IE также. Я использую

$.browser.msie && document.all

только быть уверенным.

10
ответ дан 1 December 2019 в 02:55
поделиться

Эта первая вещь отметить состоит в том, что сниффинг агента пользователя не просто означает смотреть на navigator.userAgent, это - общий термин для описания большого массива методов, которые люди используют для изменения поведения на основе того, что они полагают, что браузер.

Таким образом, проблема не смотрит на строку агента пользователя, проблема решает то, что Ваш сайт должен сделать на основе того, что Вы думаете, что браузер. Это означает, что можно неизбежно ограничить или повредить сайт в будущем; Например, я видел несколько демонстраций холста который блок IE. Они не проверяют, чтобы видеть, поддерживается ли холст, они явно ищут IE, и если они видят его, они говорят, что IE повреждается, это означает что, даже если бы IE в конечном счете поддерживал холст, эти сайты все еще не работали бы.

Вместо браузера, осуществляющего сниффинг Вас, должен всегда пытаться обнаружить функцию или ошибку, которой Вы интересуетесь. Наиболее распространенным примером этих тестов является "обнаружение объектов", например. document.createElement("canvas").getContext то, как существование холста должно быть обнаружено и правильно возьмет холст в любом браузере, даже если текущие версии не поддерживают его.

6
ответ дан 1 December 2019 в 02:55
поделиться

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

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

Также для выполнения мыши быстро многочисленные времена, попробуйте HoverIntent. Это пользователи setTimeout () я верю, чтобы только запустить события, когда мышь была по элементу в течение краткого промежутка времени, сохранив циклы и избежав стояния в очереди событий и потенциально замораживания браузера.

Лично, я предпочел jQuery с версией браузера / методы типа. Это могло использоваться для показа дружественного приветственного сообщения на основе браузера. Возможно, jQuery удержал от использования, это должный оказать давление на тот 'сниффинг браузера является злым'.

Обновление

Это - то, что говорит John Resig (создатель jQuery):

Мы сохраняем jQuery.browser для обозримого будущего, но мы хотим, чтобы разработчики переехали от использования его - и лучший способ заставить разработчиков делать, который должен стать хорошим примером надлежащих шаблонов разработки.

Быть ясным: точки, включенные в $ .support, являются главным образом конкретной ошибкой браузера (ошибки IE, которые не могут быть протестированы с обнаружением обычного объекта) - и они не охватывают каждую возможную ошибку (только приблизительно приблизительно дюжина). Ожидается, что другие разработчики добавят свои собственные точки тестирования в будущем.

Кроме того, в той фиксации я забыл сажать фактический support.js файл - это может быть найдено здесь: http://dev.jquery.com/browser/trunk/jquery/src/support.js?rev=5986

Источник: http://www.reddit.com/r/programming/comments/7l2mr/jquery_removes_all_browser_sniffing/

Также см.: http://dev.jquery.com/changeset/5985

2
ответ дан 1 December 2019 в 02:55
поделиться

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

Это могло бы работать лучше, если бы каждый браузер придерживался схемы “Name/version” идентификации себя, но они не делают. Большинство браузеров утверждает, что было “Mozilla/some.version” независимо от того, каковы они. И тот бит в запуске является единственной с готовностью parsable частью строки; остальное полностью не стандартизировано. Таким образом, сценарии начали искать целую строку characterists подстроки как “MSIE”. Это - авария.

  • Некоторые браузеры сознательно имитируют друг друга, включая подстроки как “MSIE”, “Геккон” и “Safari” в их строках агента пользователя, когда они не те браузеры, главным образом для нанесения поражения непродуманным строковым снифферам.

  • Некоторые браузеры позволяют всей строке агента пользователя имитироваться под пользовательским элементом управления.

  • Некоторые варианты браузера не. Например, Мобильный IE является ничем вообще как регулярный IE, но “MSIE” будет все еще соответствовать ему.

  • Некоторые браузеры позволяют дополнениям писать дополнительные маркеры в строку агента пользователя включая произвольный текст. Всего одно изменение реестра дополнением жулика может заставить MSIE быть похожим на Firefox.

  • Сопоставление строк просто по сути ненадежно. Например, новый браузер под названием “CLUMSIERbrowser” соответствовал бы MSIE.

4
ответ дан 1 December 2019 в 02:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: