2013-02-19 78 views
1

由于某些原因,这部分javascript阻止了我以前编写的所有其他功能。他们工作,如果我把它拿出来,并停止工作,当我把它放回去。Javascript条件浏览器检测会干扰其他功能

如果有人可以发现有什么问题,请让我知道!我对JS的态度不是很好,所以我并不十分确定我在这里做什么。

那么,我用这个作为我的参考; http://www.javascriptkit.com/javatutors/navigator.shtml

这里是我的代码:

//4th batch shows a warning box upon finding a visitor with an outdated browser 
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); 
var ffversion=new Number(RegExp.$1) // capture x.x portion and store as a number 
if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){ //test for MSIE x.x; 
var ieversion=new Number(RegExp.$1) // capture x.x portion and store as a number 
if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)){ //test for Opera/x.x or Opera x.x (ignoring remaining decimal places); 
var oprversion=new Number(RegExp.$1) // capture x.x portion and store as a number 

if (ffversion<11 || ieversion<9 || oprversion<11.6) 
function browserwarning() 
{ 
document.getElementById('oldbrowser').style.display="inherit"; 
} 
//END OF 4TH BATCH 
+0

提前:对不起,如果我是愚蠢的。我知道用一种你不熟悉的语言来搞乱是愚蠢的。 ^^' – 2013-02-19 12:46:04

+1

'RegExp。$ 1' [已弃用](https://developer.mozilla.org/zh-CN/docs/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Properties)并且不应使用。此外,if-blocks内的函数声明无效(请参阅http://kangax.github.com/nfe/,特别是关于“函数声明”的部分),并且可能会导致语法错误。检查你的错误控制台。 – Bergi 2013-02-19 12:49:41

+2

该代码是大量的语法错误,过时的技术和不推荐使用的功能。无论你从哪里得到它,我都会建议不要再使用该参考。所有应有的尊重,我强烈建议雇用某人为你完成这项工作(当然,也可以从头开始学习JavaScript)。有点分开:浏览器检测几乎不是一个好主意。 *功能*检测,通过检测浏览器可以做什么和不可以做什么,通常是更好的方法。 – 2013-02-19 12:51:13

回答

0

你忘了一些右括号和函数中的if-statesment无效。此代码将工作,没有语法错误:

//4th batch shows a warning box upon finding a visitor with an outdated browser 
if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { //test for Firefox/x.x or Firefox x.x (ignoring remaining digits); 
    var ffversion = new Number(RegExp.$1); // capture x.x portion and store as a number 
} else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { //test for MSIE x.x; 
    var ieversion = new Number(RegExp.$1); // capture x.x portion and store as a number 
} else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { //test for Opera/x.x or Opera x.x (ignoring remaining decimal places); 
    var oprversion = new Number(RegExp.$1); // capture x.x portion and store as a number 
} 

if (ffversion < 11 || ieversion < 9 || oprversion < 11.6) { 
    document.getElementById('oldbrowser').style.display = "inherit"; 
} 

但我强烈建议你到一些努力学习如何使用和编写JavaScript代码。它看起来像你试图用中文写一封信,虽然你甚至不知道他们的符号...

+1

在块的结束'}后面不要放';'。 – 2013-02-19 12:55:48

+0

为什么呢? – iappwebdev 2013-02-19 12:56:58

+2

@ Simon:出于同样的原因,你用小写字母写'if':这就是语言的定义。块不是表达式。你不要在他们之后加分号。它们最终成为空的表达式,这些表达式是无害的,但它们完全没有用处,并且使代码奇怪地被读取。 – 2013-02-19 12:57:57

0

有许多{没有相应}

if (/Firefox[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { 
    var ffversion = new Number(RegExp.$1); 
} 
else if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)) { 
    var ieversion = new Number(RegExp.$1); 
} 
else if (/Opera[\/\s](\d+\.\d+)/.test(navigator.userAgent)) { 
    var oprversion=new Number(RegExp.$1); 
} 

if (ffversion < 11 || ieversion < 9 || oprversion < 11.6) { 
     document.getElementById('oldbrowser').style.display="inherit"; 
} 

我刚刚关闭了所有括号。

无论如何,我建议你采取掠夺这个:http://www.quirksmode.org/js/detect.html