特定のクラスのdivをクリックして、以下のような関数を呼び出しています。
ユーザーがInternet Explorerを使用している場合は機能の開始時に確認でき、他のブラウザーを使用している場合はIEユーザーのみが実行されるように中止またはキャンセルできますか。ここのユーザーはすべてIE8以上のバージョンになりますので、IE7以下のバージョンをカバーする必要はありません。
どのブラウザを使用しているのかを判断できればそれは素晴らしいことですが必須ではありません。
関数の例:
$('.myClass').on('click', function(event)
{
// my function
});
以下のJavaScriptメソッドを使用してください。
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;
}
詳細はマイクロソフトサポートサイトの下にあります。
更新: (IE 11サポート)
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;
}
Internet Explorer 12以降(別名Edge)、 ユーザーエージェント文字列 が再び変更されました。
/**
* 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;
}
使用例
alert('IE ' + detectIE());
デフォルトの文字列IE 10:
Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)
デフォルトの文字列IE 11:
Mozilla/5.0 (Windows NT 6.3; Trident/7.0; rv:11.0) like Gecko
デフォルトの文字列IE 12(別名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
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
Edge 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
Edge 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
Edge 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
Edge 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
Edge 18(インサイダープレビュー)のデフォルト文字列:
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
CodePenでテストします。
マリオの非常に有用な答えを追加するだけです。
ブラウザがIEかどうかだけを知りたい場合は、コードを以下のように単純化することができます。
var isIE = 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)) {
isIE = true;
}
if ( isIE ) {
//IE specific code goes here
}
アップデート
私は今これをお勧めします。それはまだ非常に読みやすく、はるかに少ないコードです:)
var ua = window.navigator.userAgent;
var isIE = /MSIE|Trident/.test(ua);
if ( isIE ) {
//IE specific code goes here
}
短縮された答えのコメントでJohnnyFunに感謝します:)
これは、Internet Explorerのどのバージョンでもtrue
を返します。
function isIE(userAgent) {
userAgent = userAgent || navigator.userAgent;
return userAgent.indexOf("MSIE ") > -1 || userAgent.indexOf("Trident/") > -1 || userAgent.indexOf("Edge/") > -1;
}
userAgent
パラメータはオプションで、デフォルトはブラウザのユーザエージェントです。
ナビゲータオブジェクトを使用してユーザナビゲータを検出できます。jqueryは不要です。
<script type="text/javascript">
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent) || navigator.userAgent.indexOf("Trident/") > -1 ){
// do stuff with ie-users
}
</script>
これがAngularjsチームのやり方です( 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;
それから、そのような数としてそれを使うことを通して散らばった数行のコードの行があります
if (event === 'input' && msie <= 11) return false;
そして
if (enabled && msie < 8) {
上記の答えを使用する。単純で要約されたBooleanを返します。
var isIE = /(MSIE|Trident\/|Edge\/)/i.test(navigator.userAgent);
方法01:
$。browserはjQueryバージョン1.3で廃止予定となり、1.9では削除されました
if ( $.browser.msie) {
alert( "Hello! This is IE." );
}
方法02:
条件付きコメントの使用
<!--[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]>
方法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 );
}
方法04:
[/。] JavaScript /手動検出を使用する
/*
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を使う
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;
});
ユーザエージェントを使用したくない場合は、ブラウザがIEかどうかを確認するためにこれを実行することもできます。コメント付きのコードは実際にはIEブラウザで実行され、 "false"を "true"に変えます。
var isIE = /*@cc_on!@*/false;
if(isIE){
//The browser is IE.
}else{
//The browser is NOT IE.
}
私はこれを使った
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;
}
}
私はこれが古い質問であることを知っています、しかし誰かが再びそれに出くわして、そしてIE11を検出することに関する問題を抱えているならば、これはIEのすべての現在のバージョンのための実用的な解決策です。
var isIE = false;
if (navigator.userAgent.indexOf('MSIE') !== -1 || navigator.appVersion.indexOf('Trident/') > 0) {
isIE = true;
}
ブラウザがIEかどうかを検出する、もう1つの単純な(まだ人間が読める形式の)関数(Edgeを無視してもまったく問題ありません)。
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);
}
jquery version> = 1.9 を使用している場合はこれを試してください。
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;
}
jQueryのバージョン<1.9 (jQuery 1.9で$ .browserが削除された)を使用する場合は、代わりに次のコードを使用してください。
$('.myClass').on('click', function (event) {
if ($.browser.msie) {
alert($.browser.version);
}
});
グーグルしながらこれを行う上品な方法を以下に見つけました---
/ 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;
}
ここにたくさんの答えがあり、私は自分の意見を加えたいと思います。 IE 11はflexboxに関する非常に厄介な問題でした(すべての問題と矛盾を見てください ここ )。ユーザーがIEブラウザを使っているかどうかを調べる簡単な方法が本当に必要でした。そして11)を含みますが、Edgeは除外されています。なぜならEdgeは実際にはかなりいいからです。
ここで与えられた答えに基づいて、私はあなたが行の下でそれを使うことができる大域的なブール変数を返す簡単な関数を書きました。 IEを確認するのはとても簡単です。
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!");
}
この方法では、一度だけルックアップするだけでよく、各関数呼び出しで結果をフェッチする必要はなく、結果を変数に格納します。 (私が知っている限りでは、ユーザーエージェントはDOMと関係がないので、このコードを実行する準備ができたドキュメントを待つ必要さえありません。)
@ SpiderCodeのソリューションはIE 11では機能しません。これは、特定の機能のためにブラウザの検出が必要なコードで今後使用する最良のソリューションです。
この変更リストによると、IE11はMSIEとして報告されなくなりました。誤検出を避けるためのものです。
Navigator.appNameがNetscapeを返したとき、それがIEであることを本当に知りたいのであれば何ができますか?
おかげで この答え
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;
}
ブラウザがIE11以上かどうかを確認したいだけでした。
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);}
SpiderCodeの答えを更新して、文字列 'MSIE'が-1を返すが 'Trident'と一致する問題を修正しました。以前はNANを返していましたが、そのバージョンのIEでは11を返します。
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');
}
}
結果はコンソールに表示されるはずです。chromeInspectを使用してください。
ブラウザがInternet Explorerの場合は、本当に短いバージョンです。
function isIe() {
return window.navigator.userAgent.indexOf("MSIE ") > 0
|| !!navigator.userAgent.match(/Trident.*rv\:11\./);
}
このようにやってみてください
if ($.browser.msie && $.browser.version == 8) {
//my stuff
}
Internet ExplorerまたはEdgeのバージョンを検出するためのJavaScript機能
function ieVersion(uaString) {
uaString = uaString || navigator.userAgent;
var match = /\b(MSIE |Trident.*?rv:|Edge\/)(\d+)/.exec(uaString);
if (match) return parseInt(match[2])
}
私はこのコードをdocument ready関数に入れましたが、それはInternet Explorerでしか引き起こされません。 Internet Explorer 11でテスト済み.
var ua = window.navigator.userAgent;
ms_ie = /MSIE|Trident/.test(ua);
if ( ms_ie ) {
//Do internet Explorer exclusive behaviour here
}
これは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);
あなたはすべてのInternet Explorerを検出することができます(Last Version Tested 12)。
<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>
こちらを参照してください https://jsfiddle.net/v7npeLwe/
助けになると思います ここ
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;
}
}