2011-12-28 2 views
1

Я разрабатываю функцию, в которой я хотел бы проверить, какой пользовательский агент используется в настоящее время.
Следующий код является всего лишь прототипом, и он возвращает любое значение, которое он читает первым - в этом случае IE.Функция JavaScript не возвращает правильное значение

detectDevice = function() { 
    var userAgent = { 
     detect: function() { 
      return navigator.userAgent; 
     }, 
     detectBrowser: function() { 
      var browser = userAgent.detect(); 
      var currentBrowser; 
      return currentBrowser = browser.indexOf('IE') ? "Internet Explore" : browser.indexOf('Mozilla') ? "FireFox" : "UserAgent not recognized!"; 
     }, 
     version: function (identifier) { 
     } 
    }; 

    alert(userAgent.detectBrowser()); 
} 

Я не могу сказать, что случилось. Может быть, вы, ребята, можете это увидеть и сказать мне, где я ошибся.

+2

Вы уже пытались использовать '$ .browser' вместо этого? или это не подходит для ваших целей? – fcalderan

+2

В чем проблема с кодом выше? Кроме того, вас может заинтересовать http://api.jquery.com/jQuery.browser/ - вы можете посмотреть исходный код jQuery, чтобы посмотреть, как они это делают. – Douglas

ответ

6

indexOf-1 если не найдено ни одного совпадения. Если совпадение найдено, возвращаемое значение является символьным индексом найденной подстроки.

Чтобы проверить, существует ли подстроки, вы должны использовать:

browser.indexOf('IE') != -1 
// If a match is found, a non-negative index is returned. So, this also works: 
//..... indexOf('IE') > -1 
// .... indexOf('IE') >= 0 
+0

Сделал работу. Благодарю. Несколько минут, пока я не смогу принять :) – diceler

2
return (browser.indexOf('IE') > -1) 
      ? "Internet Explorer" 
      : (browser.indexOf('Mozilla') > -1) 
       ? "FireFox" 
       : "UserAgent not recognized!"; 
+0

Я не собираюсь поднимать этот ответ, потому что, несмотря на правильность, он не описывает, почему он работает. – Douglas

0

Вы не проверить значение индекса ...

, если вы найдете IndexOf ('IE')> = 0 hould be your line ...

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