Ich rufe eine Funktion wie die folgende auf, indem Sie auf divs mit einer bestimmten Klasse klicken.
Gibt es eine Möglichkeit, beim Start der Funktion zu überprüfen, ob ein Benutzer Internet Explorer verwendet, und bricht ihn ab, wenn er andere Browser verwendet, damit er nur für Benutzer von IE ausgeführt wird? Die Benutzer hier wären alle auf IE8 oder höheren Versionen, sodass ich nicht auf IE7 und niedrigere Versionen zurückgreifen müsste.
Wenn ich feststellen könnte, welchen Browser sie verwenden, wäre das großartig, aber nicht erforderlich.
Beispielfunktion:
$('.myClass').on('click', function(event)
{
// my function
});
Verwenden Sie die folgende JavaScript-Methode:
function msieversion()
{
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0) // If Internet Explorer, return version number
{
alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
}
else // If another browser, return 0
{
alert('otherbrowser');
}
return false;
}
Die Details finden Sie auf der folgenden Microsoft-Support-Site:
So ermitteln Sie die Browserversion aus einem Skript
Update: (IE 11-Unterstützung)
function msieversion() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return version number
{
alert(parseInt(ua.substring(msie + 5, ua.indexOf(".", msie))));
}
else // If another browser, return 0
{
alert('otherbrowser');
}
return false;
}
Seit Internet Explorer 12+ (auch bekannt als Edge) hat sich die Zeichenfolge User Agent erneut geändert.
/**
* detect IE
* returns version of IE or false, if browser is not Internet Explorer
*/
function detectIE() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11 => return version number
var rv = ua.indexOf('rv:');
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
}
var Edge = ua.indexOf('Edge/');
if (Edge > 0) {
// Edge (IE 12+) => return version number
return parseInt(ua.substring(Edge + 5, ua.indexOf('.', Edge)), 10);
}
// other browser
return false;
}
Verwendungsbeispiel:
alert('IE ' + detectIE());
Standardzeichenfolge von IE 10:
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
Standardzeichenfolge von IE 11:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
Standardzeichenfolge von IE 12 (aka Edge):
Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0
Standardzeichenfolge von Edge 13 (thx @DrCord):
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586
Standardzeichenfolge von Rand 14:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/14.14300
Standardzeichenfolge von Rand 15:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36 Edge/15.15063
Standardzeichenfolge von Rand 16:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 Edge/16.16299
Standardzeichenfolge von Rand 17:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/17.17134
Standardzeichenfolge von Edge 18 (Insider-Vorschau):
Mozilla/5.0 (Windows NT 10.0; Win64; x64; ServiceUI 14) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36 Edge/18.17730
Test bei CodePen:
Ich füge einfach Mario's äußerst hilfreiche Antwort hinzu.
Wenn Sie nur wissen möchten, ob der Browser IE ist oder nicht, kann der Code vereinfacht werden auf:
var ms_ie = false;
var ua = window.navigator.userAgent;
var old_ie = ua.indexOf('MSIE ');
var new_ie = ua.indexOf('Trident/');
if ((old_ie > -1) || (new_ie > -1)) {
ms_ie = true;
}
if ( ms_ie ) {
//IE specific code goes here
}
Update
Ich empfehle das jetzt. Es ist immer noch sehr gut lesbar und ist weitaus weniger Code :)
var ua = window.navigator.userAgent;
var is_ie = /MSIE|Trident/.test(ua);
if ( is_ie ) {
//IE specific code goes here
}
Danke an JohnnyFun in den Kommentaren für die verkürzte Antwort :)
Dies gibt true
für jede Version von Internet Explorer zurück:
function isIE(userAgent) {
userAgent = userAgent || navigator.userAgent;
return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1;
}
Der Parameter userAgent
ist optional und standardmäßig auf den Benutzeragenten des Browsers eingestellt.
Sie können das Navigator-Objekt verwenden, um den Benutzer-Navigator zu erkennen. Sie benötigen dafür keine Jquery
<script type="text/javascript">
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf("Trident/") > -1 ){
// do stuff with ie-users
}
</script>
So macht es das Angularjs-Team ( v 1.6.5 ):
var msie, // holds major version number for IE, or NaN if UA is not IE.
// Support: IE 9-11 only
/**
* documentMode is an IE-only property
* http://msdn.Microsoft.com/en-us/library/ie/cc196988(v=vs.85).aspx
*/
msie = window.document.documentMode;
Dann gibt es mehrere Codezeilen, die überall verstreut sind und als Zahl wie z
if (event === 'input' && msie <= 11) return false;
und
if (enabled && msie < 8) {
Verwenden Sie die Antworten oben; einfache & kondensierte Boolesche Rückgabe:
var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
Methode 01:
$. browser wurde in jQuery Version 1.3 veraltet und in 1.9 entfernt
if ( $.browser.msie) {
alert( "Hello! This is IE." );
}
Methode 02:
Bedingte Kommentare verwenden
<!--[if gte IE 8]>
<p>You're using a recent version of Internet Explorer.</p>
<![endif]-->
<!--[if lt IE 7]>
<p>Hm. You should upgrade your copy of Internet Explorer.</p>
<![endif]-->
<![if !IE]>
<p>You're not using Internet Explorer.</p>
<![endif]>
Methode 03:
/**
* Returns the version of Internet Explorer or a -1
* (indicating the use of another browser).
*/
function getInternetExplorerVersion()
{
var rv = -1; // Return value assumes failure.
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv;
}
function checkVersion()
{
var msg = "You're not using Internet Explorer.";
var ver = getInternetExplorerVersion();
if ( ver > -1 )
{
if ( ver >= 8.0 )
msg = "You're using a recent copy of Internet Explorer."
else
msg = "You should upgrade your copy of Internet Explorer.";
}
alert( msg );
}
Methode 04:
Verwenden Sie JavaScript/Manuelle Erkennung
/*
Internet Explorer sniffer code to add class to body tag for IE version.
Can be removed if your using something like Modernizr.
*/
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]);
//append class to body for use with browser support
if (v > 4)
{
$('body').addClass('ie' + v);
}
}());
function detectIE() {
var ua = window.navigator.userAgent;
var ie = ua.search(/(MSIE|Trident|Edge)/);
return ie > -1;
}
modernizr verwenden
Modernizr.addTest('ie', function () {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE ') > 0;
var ie11 = ua.indexOf('Trident/') > 0;
var ie12 = ua.indexOf('Edge/') > 0;
return msie || ie11 || ie12;
});
Wenn Sie den Useragent nicht verwenden möchten, können Sie dies auch tun, um zu prüfen, ob der Browser IE ist. Der kommentierte Code läuft tatsächlich in IE - Browsern und setzt "false" auf "true".
var isIE = /*@[email protected]*/false;
if(isIE){
//The browser is IE.
}else{
//The browser is NOT IE.
}
ich habe das benutzt
function notIE(){
var ua = window.navigator.userAgent;
if (ua.indexOf('Edge/') > 0 ||
ua.indexOf('Trident/') > 0 ||
ua.indexOf('MSIE ') > 0){
return false;
}else{
return true;
}
}
Ich weiß, dass dies eine alte Frage ist, aber falls jemand wieder auf sie stößt und Probleme mit der Erkennung von IE11 hat, ist hier eine funktionierende Lösung für alle aktuellen Versionen von IE.
var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
isIE = true;
}
Noch eine weitere einfache (aber von Menschen lesbare) Funktion, die erkennt, ob der Browser IE ist oder nicht (Edge ignoriert, was überhaupt nicht schlecht ist)
function isIE() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf('MSIE '); // IE 10 or older
var trident = ua.indexOf('Trident/'); //IE 11
return (msie > 0 || trident > 0);
}
Versuchen Sie dies, wenn Sie jquery version> = 1.9 verwenden,
var browser;
jQuery.uaMatch = function (ua) {
ua = ua.toLowerCase();
var match = /(chrome)[ \/]([\w.]+)/.exec(ua) ||
/(webkit)[ \/]([\w.]+)/.exec(ua) ||
/(opera)(?:.*version|)[ \/]([\w.]+)/.exec(ua) ||
/(msie) ([\w.]+)/.exec(ua) ||
ua.indexOf("compatible") < 0 && /(mozilla)(?:.*? rv:([\w.]+)|)/.exec(ua) ||
/(Trident)[\/]([\w.]+)/.exec(ua) || [];
return {
browser: match[1] || "",
version: match[2] || "0"
};
};
// Don't clobber any existing jQuery.browser in case it's different
if (!jQuery.browser) {
matched = jQuery.uaMatch(navigator.userAgent);
browser = {};
if (matched.browser) {
browser[matched.browser] = true;
browser.version = matched.version;
}
// Chrome is Webkit, but Webkit is also Safari.
if (browser.chrome) {
browser.webkit = true;
} else if (browser.webkit) {
browser.safari = true;
}
jQuery.browser = browser;
}
Wenn Sie jQuery Version <1.9 verwenden ($ .browser wurde in jQuery 1.9 entfernt), verwenden Sie stattdessen folgenden Code:
$('.myClass').on('click', function (event) {
if ($.browser.msie) {
alert($.browser.version);
}
});
Unten habe ich einen eleganten Weg gefunden, während ich google ---
/ detect IE
var IEversion = detectIE();
if (IEversion !== false) {
document.getElementById('result').innerHTML = 'IE ' + IEversion;
} else {
document.getElementById('result').innerHTML = 'NOT IE';
}
// add details to debug result
document.getElementById('details').innerHTML = window.navigator.userAgent;
/**
* detect IE
* returns version of IE or false, if browser is not Internet Explorer
*/
function detectIE() {
var ua = window.navigator.userAgent;
// Test values; Uncomment to check result …
// IE 10
// ua = 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)';
// IE 11
// ua = 'Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko';
// IE 12 / Spartan
// ua = 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.71 Safari/537.36 Edge/12.0';
// Edge (IE 12+)
// ua = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Safari/537.36 Edge/13.10586';
var msie = ua.indexOf('MSIE ');
if (msie > 0) {
// IE 10 or older => return version number
return parseInt(ua.substring(msie + 5, ua.indexOf('.', msie)), 10);
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {
// IE 11 => return version number
var rv = ua.indexOf('rv:');
return parseInt(ua.substring(rv + 3, ua.indexOf('.', rv)), 10);
}
var Edge = ua.indexOf('Edge/');
if (Edge > 0) {
// Edge (IE 12+) => return version number
return parseInt(ua.substring(Edge + 5, ua.indexOf('.', Edge)), 10);
}
// other browser
return false;
}
Viele Antworten hier, und ich möchte meinen Beitrag hinzufügen. IE 11 war so ein Arsch in Sachen Flexbox (siehe alle Probleme und Inkonsistenzen hier ), dass ich wirklich einen einfachen Weg brauchte, um zu überprüfen, ob ein Benutzer einen IE - Browser verwendet (bis zu und einschließlich 11), aber ohne Edge, weil Edge eigentlich ganz nett ist.
Basierend auf den hier gegebenen Antworten habe ich eine einfache Funktion geschrieben, die eine globale boolesche Variable zurückgibt, die Sie dann in der Zeile verwenden können. Es ist sehr einfach, nach IE zu suchen.
var isIE;
(function() {
var ua = window.navigator.userAgent,
msie = ua.indexOf('MSIE '),
trident = ua.indexOf('Trident/');
isIE = (msie > -1 || trident > -1) ? true : false;
})();
if (isIE) {
alert("I am an Internet Explorer!");
}
Auf diese Weise müssen Sie die Suche nur einmal durchführen und das Ergebnis in einer Variablen speichern, statt das Ergebnis bei jedem Funktionsaufruf abrufen zu müssen. (Soweit ich weiß, müssen Sie nicht einmal darauf warten, dass das Dokument zur Ausführung dieses Codes bereit ist, da der Benutzeragent nicht mit dem DOM zusammenhängt.)
Die Lösung von @ SpiderCode funktioniert nicht mit IE 11. Hier ist die beste Lösung, die ich fortan in meinem Code verwendet habe, bei der ich Browsererkennung für bestimmte Funktionen benötige.
Der IE11 meldet sich nicht mehr als MSIE. Gemäß dieser Änderungsliste ist es beabsichtigt, falsche Erkennung zu vermeiden.
Was Sie tun können, wenn Sie wirklich wissen wollen, dass es IE ist, das Trident/den String im Benutzerprogramm zu ermitteln, wenn navigator.appName Netscape zurückgibt, etwa (das ungetestete);
Danke an diese Antwort
function isIE()
{
var rv = -1;
if (navigator.appName == 'Microsoft Internet Explorer')
{
var ua = navigator.userAgent;
var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
else if (navigator.appName == 'Netscape')
{
var ua = navigator.userAgent;
var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null)
rv = parseFloat( RegExp.$1 );
}
return rv == -1 ? false: true;
}
Ich wollte nur überprüfen, ob der Browser IE11 oder älter war, denn nun, sie sind Mist.
function isCrappyIE() {
var ua = window.navigator.userAgent;
var crappyIE = false;
var msie = ua.indexOf('MSIE ');
if (msie > 0) {// IE 10 or older => return version number
crappyIE = true;
}
var trident = ua.indexOf('Trident/');
if (trident > 0) {// IE 11 => return version number
crappyIE = true;
}
return crappyIE;
}
if(!isCrappyIE()){console.table('not a crappy browser);}
Aktualisieren Sie die Antwort von SpiderCode, um Probleme zu beheben, bei denen die Zeichenfolge 'MSIE' -1 zurückgibt, aber 'Trident' entspricht. Früher wurde NAN zurückgegeben, jetzt jedoch 11 für diese IE-Version.
function msieversion() {
var ua = window.navigator.userAgent;
var msie = ua.indexOf("MSIE ");
if (msie > -1) {
return ua.substring(msie + 5, ua.indexOf(".", msie));
} else if (navigator.userAgent.match(/Trident.*rv\:11\./)) {
return 11;
} else {
return false;
}
}
function msieversion() {
var ua = window.navigator.userAgent;
console.log(ua);
var msie = ua.indexOf("MSIE ");
if (msie > -1 || navigator.userAgent.match(/Trident.*rv:11\./)) {
// If Internet Explorer, return version numbe
// You can do what you want only in IE in here.
var version_number=parseInt(ua.substring(msie + 5, ua.indexOf(".", msie)));
if (isNaN(version_number)) {
var rv_index=ua.indexOf("rv:");
version_number=parseInt(ua.substring(rv_index+3,ua.indexOf(".",rv_index)));
}
console.log(version_number);
} else {
//other browser
console.log('otherbrowser');
}
}
Sie sollten das Ergebnis in der Konsole sehen, verwenden Sie Chrome Inspect.
Oder diese wirklich kurze Version gibt true zurück, wenn der Browser Internet Explorer ist:
function isIe() {
return window.navigator.userAgent.indexOf("MSIE ") > 0
|| !!navigator.userAgent.match(/Trident.*rv\:11\./);
}
Versuchen Sie es so
if ($.browser.msie && $.browser.version == 8) {
//my stuff
}
JavaScript-Funktion zur Erkennung der Version von Internet Explorer oder Edge
function ieVersion(uaString) {
uaString = uaString || navigator.userAgent;
var match = /\b(MSIE |Trident.*?rv:|Edge\/)(\d+)/.exec(uaString);
if (match) return parseInt(match[2])
}
Ich habe diesen Code in die Document Ready-Funktion eingefügt und er wird nur im Internet Explorer ausgelöst. In Internet Explorer 11 getestet.
var ua = window.navigator.userAgent;
ms_ie = /MSIE|Trident/.test(ua);
if ( ms_ie ) {
//Do internet Explorer exclusive behaviour here
}
Dies funktioniert nur unter der Version IE 11.
var ie_version = parseInt(window.navigator.userAgent.substring(window.navigator.userAgent.indexOf("MSIE ") + 5, window.navigator.userAgent.indexOf(".", window.navigator.userAgent.indexOf("MSIE "))));
console.log("version number",ie_version);
Sie können den gesamten Internet Explorer (letzte getestete Version 12) ermitteln.
<script>
var $userAgent = '';
if(/MSIE/i['test'](navigator['userAgent'])==true||/rv/i['test'](navigator['userAgent'])==true||/Edge/i['test'](navigator['userAgent'])==true){
$userAgent='ie';
} else {
$userAgent='other';
}
alert($userAgent);
</script>
Siehe hier https://jsfiddle.net/v7npeLwe/
Ich denke es wird dir helfen Hier
function checkIsIE() {
var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
isIE = true;
}
if (isIE) // If Internet Explorer, return version number
{
kendo.ui.Window.fn._keydown = function (originalFn) {
var KEY_ESC = 27;
return function (e) {
if (e.which !== KEY_ESC) {
originalFn.call(this, e);
}
};
}(kendo.ui.Window.fn._keydown);
var windowBrowser = $("#windowBrowser").kendoWindow({
modal: true,
id: 'dialogBrowser',
visible: false,
width: "40%",
title: "Thông báo",
scrollable: false,
resizable: false,
deactivate: false,
position: {
top: 100,
left: '30%'
}
}).data('kendoWindow');
var html = '<br /><div style="width:100%;text-align:center"><p style="color:red;font-weight:bold">Please use the browser below to use the tool</p>';
html += '<img src="/Scripts/IPTVClearFeePackage_Box/Images/firefox.png"/>';
html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/chrome.png" />';
html += ' <img src="/Scripts/IPTVClearFeePackage_Box/Images/opera.png" />';
html += '<hr /><form><input type="button" class="btn btn-danger" value="Đóng trình duyệt" onclick="window.close()"></form><div>';
windowBrowser.content(html);
windowBrowser.open();
$("#windowBrowser").parent().find(".k-window-titlebar").remove();
}
else // If another browser, return 0
{
return false;
}
}