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

Заранее: Жаль, если я глуп. Я знаю, что это безумие, чтобы возиться с языком, который вы действительно не знаете. ^^ ' –

+1

'RegExp. $ 1' [устарел] (https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Deprecated_and_obsolete_features#RegExp_Properties) и не должен использоваться. Кроме того, объявления функций внутри if-блоков недействительны (проверьте http://kangax.github.com/nfe/, особенно раздел «Операторы функций») и, вероятно, вызовет синтаксическую ошибку. Проверьте консоль ошибок. – Bergi

+2

Этот код представляет собой массу синтаксических ошибок, устаревшие методы и устаревшие функции. Куда бы вы его ни взяли, я бы рекомендовал не использовать эту ссылку еще раз. При всем уважении, я настоятельно рекомендую нанять кого-то для выполнения этой работы для вас (или, конечно, шаг назад и изучение JavaScript с самого начала). Совсем отдельно: обнаружение браузера почти никогда не является хорошей идеей. * Функция * обнаружение, где вы обнаруживаете, что браузер может и не может сделать, обычно является лучшим подходом. –

ответ

0

Вы забыли некоторые закрывающие скобки и функции внутри если-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

Вы не ставите ';' после закрытия '}' блока. –

+0

И почему? – iappwebdev

+2

@ Simon: По той же причине вы пишете 'if' в нижнем регистре: так определяется язык. Блоки не являются выражениями. После этого вы не ставите точки с запятой. Они в конечном итоге являются пустыми выражениями, которые безвредны, но они не имеют никакой цели и делают код нечетным для чтения. –

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

Смежные вопросы