Как обнаружить IE7 и ниже, используя jquery.support? -- javascript поле с участием jquery поле с участием jquery.support пол Связанный проблема

How to detect IE7 and lower using jQuery.support?


6
vote

проблема

русский

В настоящее время я использую jquery.browser для обнаружения IE7 и ниже

 <код> if ($.browser.msie && parseInt($.browser.version) <= 7) {     //codes }   

Но jquery.Browser был устарел в jQuery 1.3 и удалил в jQuery 1.9, я прочитал с сайта jQuery, который мы должны использовать вместо этого обнаружения функций (jquery.support).

Так, как обнаружить IE7 и снизить с помощью jquery.support?

Английский оригинал

Currently I'm using jQuery.browser to detect IE7 and lower

if ($.browser.msie && parseInt($.browser.version) <= 7) {     //codes } 

but jQuery.browser was deprecated in jQuery 1.3 and removed in jQuery 1.9, I read from jQuery website that we should use feature detection instead (jQuery.support).

So, how to detect IE7 and lower using jQuery.support?

</div
        
         
         

Список ответов

10
 
vote
vote
Лучший ответ
 

Лучший способ - использовать условные комментарии и проверьте его, используя jQuery's <код> ans1 .

 <код> ans2  

и в вашем jQuery, проверьте на IE 7:

 <код> ans3  

Этот метод не может быть подменным независимо от того, что. Также см.: Условные таблицы стилей Paul Irish.

 

The best way is to use conditional comments and check it using jQuery's hasClass().

<!--[if lt IE 7]>      <html class="ie6"> <![endif]--> <!--[if IE 7]>         <html class="ie7"> <![endif]--> <!--[if IE 8]>         <html class="ie8"> <![endif]--> <!--[if gt IE 8]><!--> <html>         <!--<![endif]--> 

And in your jQuery, check for IE 7:

// Check IE 7 if ($('html').hasClass('ie7'); 

This method cannot be spoofed no matter what. Also see: Conditional Stylesheets by Paul Irish.

</div
 
 
 
 
2
 
vote

Эта маленькая функция скажет вам, нарушен ли код кнопки:

 <код> ans4  
 

This small function will tell you whether the button code is broken:

function isButtonBroken() {     var b = document.createElement('button');      b.value = 1;     b.appendChild(document.createTextNode('2'));      return b.value === '12'; } 
</div
 
 
 
 
1
 
vote

jquery.support не дает вам браузера. По состоянию на jQuery 1.9 Функция $ .Browser устарена. Если вы после быстрого было самым простым способом - использовать браузеры нативный объект навигатора.

 <код> ans5  

Использование Modernizr

 <код> ans6  

Это не рекомендуется, однако, как браузер может легко «поднимать» этот объект. Использование таких библиотеки, как Moderizer для обнаружения функции, является современный подход. Для получения более подробной информации см.: 5+ способов проверки версии IE с помощью JavaScript / JQuery

 

jQuery.Support does not give you the browser. As of jQuery 1.9 the $.browser function is deprecated. If your after a quick was the easiest way is to use the browsers native navigator object.

//check for IE7 if(navigator.appVersion.indexOf("MSIE 7.")!=-1) 

Using Modernizr

//check for IE7 or less if ($('html').hasClass('lt-ie7'); 

This is not recommended however as the browser can easily "spoof" this object. Using a library such as Moderizer to feature detect is modern approach. For more details info see: 5+ WAYS TO CHECK IE VERSION USING JAVASCRIPT/JQUERY

</div
 
 
1
 
vote

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

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

 <код> ans7  

Имейте в виду, что это будет только работа в версиях, поддерживающих условные комментарии , и он будет не работать в IE10 или выше .

 

As others have said trying to detect a browser version is a bad idea and you should rely on feature detection.

That said the only reliable way to detect an IE browser rendering engine is using conditional comments. You can use this little snippet that'll get it for you:

var ie = (function(){      var undef,         v = 3,         div = document.createElement('div'),         all = div.getElementsByTagName('i');      while (         div.innerHTML = '<!--[if gt IE ' + (++v) + ']><i></i><![endif]-->',         all[0]     );      return v > 4 ? v : undef;  }()); 

Keep in mind that this will only work in IE versions supporting conditional comments and it will not work in IE10 or above.

</div
 
 
0
 
vote

Без сценария не может быть основано на приведении кнопки тип отправки и имени, которое вы хотите отправить. Затем на сервере сделайте действие зависит от значения атрибута имени, а не значение, например.

 <код> <button type="submit" name="whatever" value="Click me 0">Click me 0</button>   

Теперь каждый браузер отправит кнопку как <код> &whatever=Click+me+0 . У меня нет IE 7, чтобы проверить, но из того, что вы опубликовали, что должно работать.

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

Конечно, самый простой из всех - использовать тип ввода Отправить, но, возможно, вы не можете это сделать.

 

A no script solution can be based on giving the button a type of submit and a name that is the value you want to submit. Then, at the server, make the action dependent on the value of the name attribute, not the value, e.g.

<button type="submit" name="whatever" value="Click me 0">Click me 0</button> 

Now every browser will submit the button as &whatever=Click+me+0. I don't have IE 7 to test with, but from what you've posted, that should work.

If you have multiple buttons in the form, only the one that is clicked to submit the form will be successful, so only that button's name and value will be submitted.

Of course the simplest of all is to use input type submit, but maybe you can't do that.

</div
 
 
 
 
0
 
vote

Вы можете обнаружить, используя следующие условия.

 <код> if (!$.support.leadingWhitespace) {     //IE7 stuff }   
 

U Can detect by using following condition.

if (!$.support.leadingWhitespace) {     //IE7 stuff } 
</div
 
 
-1
 
vote

Вы не можете обнаружить браузер с помощью jquery.support.

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

Например, если вы хотите использовать функцию AJAX, Вы должны проверить наличие объекта XMLHTTTREQUEST от jQuery.support.ajax

 <код> var ajaxEnabled = $.support.ajax; if (ajaxEnabled) {   // do something }   

jquery.browser Документ говорит, что

jquery.Browser может быть перемещен в плагин в будущем выпуске jQuery.

а также говорит, что

Потому что $ .Browser использует Navigator.UserAgent для определения платформы, она уязвима для подделки пользователями или искажением самого браузера. Всегда лучше всего избегать конкретного браузера кода, где это возможно. Собственность $ .support доступен для обнаружения поддержки для определенных функций, а не полагаться на $ .browser.


Вы можете сделать свой собственный код обнаружения браузера. См. ниже. Но имейте в виду, что этот код уязвим для SPOOFING Как говорится в документе jQuery.

 <код> var ua = navigator.userAgent.toLowerCase();  var isOpera : (ua.indexOf('opera') >= 0) ? true : false; var isFirefox : (ua.indexOf('firefox') >= 0) ? true : false; var isMSIE : (ua.indexOf('msie') >= 0) ? true : false; var isMSIE6 : (ua.indexOf('msie 6.0') >= 0) ? true : false; var isMSIE7 : (ua.indexOf('msie 7.0') >= 0) ? true : false; var isMSIE8 : (ua.indexOf('msie 8.0') >= 0) ? true : false; var isMSIE9 : (ua.indexOf('msie 9.0') >= 0) ? true : false; // and other browsers...   
 

You cannot detect the browser using jQuery.support.

Rather than checking the browser, you should check the feature of browsers you want to use.

For example, if you want to use ajax feature, you sould check the presence of XMLHttpRequest object by jQuery.support.ajax

var ajaxEnabled = $.support.ajax; if (ajaxEnabled) {   // do something } 

jQuery.browser document says that

jQuery.browser may be moved to a plugin in a future release of jQuery.

And also says that

Because $.browser uses navigator.userAgent to determine the platform, it is vulnerable to spoofing by the user or misrepresentation by the browser itself. It is always best to avoid browser-specific code entirely where possible. The $.support property is available for detection of support for particular features rather than relying on $.browser.


You can make your own browser-detection code. See below. But keep in mind that this code is vulnerable to spoofing as jQuery document says.

var ua = navigator.userAgent.toLowerCase();  var isOpera : (ua.indexOf('opera') >= 0) ? true : false; var isFirefox : (ua.indexOf('firefox') >= 0) ? true : false; var isMSIE : (ua.indexOf('msie') >= 0) ? true : false; var isMSIE6 : (ua.indexOf('msie 6.0') >= 0) ? true : false; var isMSIE7 : (ua.indexOf('msie 7.0') >= 0) ? true : false; var isMSIE8 : (ua.indexOf('msie 8.0') >= 0) ? true : false; var isMSIE9 : (ua.indexOf('msie 9.0') >= 0) ? true : false; // and other browsers... 
</div
 
 

Связанный проблема

4  Создание нового пустого документа с JavaScript  ( Creating a new empty document with javascript ) 
Я работаю с некоторыми очень неразрушными XML (все теги - такие вещи, как «TX», «H», «VC»). Я хотел бы сделать копию этих данных, но со всеми тегами переиме...

0  Имея проблемы с использованием объема в jQuery  ( Having issues using a scope in jquery ) 
Так что я пытаюсь передать значение переменной FreeMarker ($ {item.uid}) на клик ссылки, чтобы запустить модаль с тем же уникальным значением идентификатора. ...

3  Как реализовать автономный компонент в React Redux?  ( How to implement a self contained component in react redux ) 
Я создаю базу файлового менеджера Webui основы на React Redux (моя цель - это управлять React и Redux через этот проект) Как вы знаете, файловый менеджер ну...

5  Экспорт SVG в PDF в автономном TideSDK WebApp  ( Exporting svg to pdf in a offline tidesdk webapp ) 
У меня есть приложение Offline HTML5 / CSS / JS, построенное с TIDESDK, в котором гистограмма нарисована с HighCharts в качестве SVG «Tag», используя данные, ...

11  Rx JS понимает метод подъема  ( Rx js understanding the lift method ) 
Я хочу создать новый оператор, и я нахожу в Документация То, что один из способов сделать что-то подобное: <код> class MyObservable extends Observable { ...

1  Обработка ошибок METEOR для шаблона именования ошибок опечатки  ( Meteor error handling for template naming typo errors ) 
Недавно у меня была ошибка с именем, используемым в файле помощников. Поскольку используемое имя шаблона было недействительным, все мои глобальные помощники п...

0  SVG D3 круговой контроль  ( Svg d3 circular control ) 
Я пытаюсь сделать контроль, в котором радиальные линии прилипают за пределами круга. Длина каждой линии, прилипающей зависит от значения данных. Короче говоря...

30  Динамическое имя NG-контроллера  ( Dynamic ng controller name ) 
Я хочу динамически указать контроллер на основе конфигурации, которую мы загружаем. Что-то вроде этого: <код> <div ng-controller="{{config.controllerNameStr...

0  транзакция внутри контура  ( Transaction inside a for loop ) 
Я хочу запустить транзакцию внутри контура. Мой код: - <код> n==00 Но проблема в том, что после оповещения (перед транзакцией) я напрямую получаю предупр...

0  Запустить функцию JavaScript с использованием C #  ( Trigger javascript function using c sharp ) 
Я должен написать класс C #, который получает содержимое HTML-страницы (страница публичная) и запускает функцию JavaScript, которая загружает файл. Моя цель...

3  Рисование круга с помощью кинетических js  ( Drawing a circle using kinetic js ) 
Я пытаюсь построить очень базовую покраску, используя каркас kinetic JS. Все все идут хорошо, пока не попытался включить функцию формы, которая позволяет поль...

0  Почему строковая переменная может использовать метод Foreach по вызову JS?  ( Why a string variable can use foreach method by call in js ) 
<Код> var rst = 0; var num = 0; Array.prototype.forEach.call(num + '', function(v){ rst += +v; }); Вы можете увидеть сверху. <Код> num - это ном...

0  Как проверить функцию в жасмине  ( How to test a function in jasmine ) 
Может кто-нибудь помочь мне, пожалуйста? Я пытаюсь проверить функцию, которая вызывает функции FireBase, но когда я вызываю основную функцию и начните управля...

-1  Откройте диалог поиска поля в CRM 2011 от JavaScript  ( Open the lookup dialog of a field in crm 2011 from javascript ) 
Как я могу запустить диалог поиска поля поиска, используя JavaScript? ...

1  Джейморфизм JavaScript: Как получить доступ к статическим атрибутам наследования класса в статическом методе («абстрактный») базовый класс?  ( Javascript polymorphism how to access static attributes of inheriting class in ) 
Я хотел бы иметь базовый класс и наследственный класс. Базовый класс должен обеспечить некоторую общую функциональность, которая зависит от свойств наследстве...