2013-02-19 41 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