我会通过点击具有特定类的div来调用以下类似的函数。
是否有一种方法可以在启动函数时检查用户是否正在使用Internet Explorer,并在他们使用其他浏览器时中止/取消它,以便它仅适用于IE用户?这里的用户都将在IE8或更高版本上运行,因此我不需要覆盖IE7和更低版本。
如果我能知道他们正在使用哪个浏览器,那就太好了,但并非必需。
示例函数:
$('.myClass').on('click', function(event)
{
// my function
});
我会通过点击具有特定类的div来调用以下类似的函数。
是否有一种方法可以在启动函数时检查用户是否正在使用Internet Explorer,并在他们使用其他浏览器时中止/取消它,以便它仅适用于IE用户?这里的用户都将在IE8或更高版本上运行,因此我不需要覆盖IE7和更低版本。
如果我能知道他们正在使用哪个浏览器,那就太好了,但并非必需。
示例函数:
$('.myClass').on('click', function(event)
{
// my function
});
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;
}
在我谷歌搜索的过程中,我发现了以下优雅的方法来实现这个目标 ---
/ 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;
}
var usingIE="__IE_DEVTOOLBAR_CONSOLE_EVAL_ERROR" in document;
alert("You are"+(usingIE?"":"n't")+" using Internet Explorer.");
我在测试我的网站是否能在IE上正常工作时,无意中发现了这个。我进入了调试器并点击了文件夹图标。它有我的脚本,还有一个我没有的 Dynamic Scripts
文件夹。我打开了它,发现了很多 browsertools.library.js
文件。在它们里面,我找到了一些内容,比如:
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_RESULT = undefined;
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_ERROR = false;
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_ERRORCODE = undefined;
try{
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_RESULT = eval("\r\n//# sourceURL=browsertools://browsertools.library.js");
}
catch( eObj ){
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_ERRORCODE = eObj.number;
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_RESULT = eObj.message || eObj.description || eObj.toString();
document.__IE_DEVTOOLBAR_CONSOLE_EVAL_ERROR = true;
}
因此,我使用这些来测试用户的浏览器是否为IE。请注意,这仅适用于想要知道他们是否使用IE,而不是确切的IE版本。
我在2020年登陆了这个页面,看到至IE5的所有userAgent字符串都有Trident
,我不确定它们是否改变了什么。因此,仅检查userAgent中的Trident对我有效。
var isIE = navigator.userAgent.indexOf('Trident') > -1;
更新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;
}
}
这只适用于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("版本号", ie_version);
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');
}
}
您应该在控制台中看到结果,请使用Chrome检查。
JavaScript函数用于检测Internet Explorer或Edge的版本
function ieVersion(uaString) {
uaString = uaString || navigator.userAgent;
var match = /\b(MSIE |Trident.*?rv:|Edge\/)(\d+)/.exec(uaString);
if (match) return parseInt(match[2])
}
您可以检测所有的Internet Explorer浏览器(最后测试版本为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>
我把这段代码放在文档就绪函数中,它只在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
}
随着现代Web开发的发展,支持非基于Chromium的浏览器是一种不良做法(其中Safari被认为根本不是基于Chromium的)
。很抱歉,但这种疯狂必须在某个时候以某种方式结束...... - user2173353