隐藏/显示IE-Javascript中的元素
我正在使用一个脚本,如果用户正在或没有使用IE,它会弹出一个隐藏/显示IE-Javascript中的元素,javascript,html,css,Javascript,Html,Css,我正在使用一个脚本,如果用户正在或没有使用IE,它会弹出一个警报 与此相反,我希望在页面中显示或隐藏div元素 我在这里尝试过,但没有成功: 此处的工作警报演示: 函数GetIEVersion(){ var sAgent=window.navigator.userAgent; var Idx=sAgent.indexOf(“MSIE”); //如果是IE,返回版本号。 如果(Idx>0) 返回parseInt(sAgent.substring(Idx+5,sAgent.indexOf(“.”,
警报
与此相反,我希望在页面中显示或隐藏div
元素
我在这里尝试过,但没有成功:
此处的工作警报演示:
函数GetIEVersion(){
var sAgent=window.navigator.userAgent;
var Idx=sAgent.indexOf(“MSIE”);
//如果是IE,返回版本号。
如果(Idx>0)
返回parseInt(sAgent.substring(Idx+5,sAgent.indexOf(“.”,Idx));
//如果是IE 11,则查找更新的用户代理字符串。
else if(!!navigator.userAgent.match(/Trident\/7\./))
返回11;
其他的
返回0;//它不是IE
}
var e=document.getElementById(ie);
var e2=document.getElementById(chrome);
如果(GetIEVersion()>0)
警报(“这是IE”+GetIEVersion());
e、 style.display='block';
e2.style.display='none';
其他的
警惕(“这不是IE”);
e、 style.display='none';
e2.style.display='block'代码>
即
铬
在使用if
/else
语句时,应使用{}
。当只有一条语句时,选项是可选的,但当有多条语句时,选项是强制性的。我建议无论语句的数量多少,都要始终使用{}
您还需要将字符串传递给getElementById()
函数GetIEVersion(){
var sAgent=window.navigator.userAgent;
var Idx=sAgent.indexOf(“MSIE”);
//如果是IE,返回版本号。
如果(Idx>0){
返回parseInt(sAgent.substring(Idx+5,sAgent.indexOf(“.”,Idx));
}
//如果是IE 11,则查找更新的用户代理字符串。
else if(!!navigator.userAgent.match(/Trident\/7\./)){
返回11;
}
否则{
返回0;//它不是IE
}
}
var e=document.getElementById('ie');
var e2=document.getElementById('chrome');
如果(GetIEVersion()>0){
警报(“这是IE”+GetIEVersion());
e、 style.display='block';
e2.style.display='none';
}
否则{
警惕(“这不是IE”);
e、 style.display='none';
e2.style.display='block';
}
即
铬
如果没有使用条件IE注释的Javascript,您可以轻松实现这一点(IE与非IE)
<!--[if IE ]>
<style>
#chrome { display: none; }
</style>
<div id="ie">
ie
</div>
<![endif]-->
<div id="chrome">
chrome
</div>
铬
注意这只适用于IE9及以下版本-如果您在IE10或以上版本中使用标准或怪癖模式,条件注释将不起作用 如果在
if
或else
中有多个语句,则需要将它们用大括号括起来
if (GetIEVersion() > 0) {
alert("This is IE " + GetIEVersion());
e.style.display = 'block';
e2.style.display = 'none';
} else {
alert("This is not IE.");
e.style.display = 'none';
e2.style.display = 'block';
}
似乎是语法错误
if (GetIEVersion() > 0) {
alert("This is IE " + GetIEVersion());
e.style.display = 'block';
e2.style.display = 'none';
}
else {
alert("This is not IE.");
e.style.display = 'none';
e2.style.display = 'block';
}
我从Stack Overflow answer检测Chrome的以下代码片段中获得了巨大成功: 我已经测试过了,它在InternetExplorer上运行得很好 它避免了我喜欢的
.indexOf()
方法。您只需将正则表达式中的搜索参数替换为MSIE即可
警报是否有效?该
if
语句中没有括号您需要{}
括号来说明多行ifsOverall,两个(或三个)问题,使用最基本的控制台检查方法可以完全避免这些问题。它(正确地)报告了else
语句是错误的,因为它与任何if
s不匹配,它还抱怨e
为null
,如果该错误被修复,它也会抛出与e2
相同的错误。我们每天都会在这里看到几十次这样的新手失误,但通常都是来自……嗯,新手。我原以为一个5年超过2k的会员代表会。有基本的技能来避免它们2。不要跑到SO去寻求调试帮助。@TankorSmash谢谢:-)谢谢你的回答。我在这里做了更新:但它似乎仍然显示了两个div:(火箭的名字,火箭的性质-什么速度!:-D谢谢you@michaelmcgurk:检查您的getElementById()
行。您需要传递字符串。@michaelmcgurk检查JavaScript控制台,原因变得很清楚TypeError:e为null
。由于并非所有IE版本都支持.indexOf()
方法,我建议使用.match()
方法。难以置信。这是大多数编程语言中的常见语法。你通常是Python程序员吗?这是唯一一种使用缩进而不是括号的通用语言。@Barmar:或者他可以习惯于在if
/else
中的单行中省略缩进的语法。这就是一个非常干净的方法-我喜欢它!虽然IE10和更高版本中有条件评论。@Teemu在标准和怪癖模式中(大多数人可能会选择-只是想澄清一点)。谢谢你的评论,我会更新我的回答。非常感谢亚历山大花时间回复我的详细回复。非常感谢:-)
var detectID = (function() {
var ua = navigator.userAgent,
tem,
M = ua.match(/(opera|chrome|safari|firefox|msie|trident(?=\/))\/?\s*(\d+)/i) || [];
if (/trident/i.test(M[1])) {
tem = /\brv[ :]+(\d+)/g.exec(ua) || [];
return 'IE ' + (tem[1] || '');
}
if (M[1] === 'Chrome') {
tem = ua.match(/\b(OPR|Edge)\/(\d+)/);
if (tem != null) return tem.slice(1).join(' ').replace('OPR', 'Opera');
}
M = M[2] ? [M[1], M[2]] : [navigator.appName, navigator.appVersion, '-?'];
if ((tem = ua.match(/version\/(\d+)/i)) != null) M.splice(1, 1, tem[1]);
return M.join(' ');
})();
if (detectID.match("IE") || detectID.match("MSIE") ) {
console.log("IE Browser Detected: " + detectID);
} else {
console.log("Not IE: " + detectID);
}