这可能很简单,但我对JavaScript并不擅长,所以在这里挣扎了一下。我有以下代码:
//Internet Explorer
if (navigator.appName == "Microsoft Internet Explorer") {
//Set IE as true
ie = true;
//Create a user agent var
var ua = navigator.userAgent;
//Write a new regEx to find the version number
var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})");
//If the regEx through the userAgent is not null
if (re.exec(ua) != null) {
//Set the IE version
ieVersion = parseInt(RegExp.$1);
}
}
else if (navigator.appName == 'Netscape') {
ie = true;
var ua = navigator.userAgent;
var re = new RegExp("Trident/.*rv:([0-9]{1,}[\.0-9]{0,})");
if (re.exec(ua) != null) {
ieVersion = parseInt( RegExp.$1 );
}
}
else {
ie = false;
ieVersion = null;
}
jQuery(document).ready(function() {
if(ie == true && ieVersion > 7){
jQuery("<br />").insertAfter(".entry-title wbr");
}
});
我收到以下错误:
未捕获的ReferenceError:未定义ieVersion
我很难理解为什么没有定义它。有人可以解释一下吗?
答案 0 :(得分:0)
在您的脚本顶部,您有一个很大的if / else if / else块,可能设置ieVersion
。
这三个部分中的每一部分都包含该变量的赋值,但其中一些部分将其放在另一个if
内。
这意味着您可以,例如,匹配if (navigator.appName == 'Netscape')
,然后无法匹配if (re.exec(ua) != null)
,因此永远不会达到ieVersion =
声明。
解决此问题的最简单方法是设置默认值:
ieVersion = null;
位于脚本的最顶层。
你 也应该明确地声明它(var ieVersion = null
),因为这已被认为是很长时间的最佳实践,并且JavaScript严格模式需要它。
答案 1 :(得分:0)
在初始方法之前声明var ieVersion = null;
,或使用window.ieVersion
,即http://jsfiddle.net/gys38u4q/