2012-06-26 3 views
2

У меня есть простая функция, которая работает в хроме, но в Internet Explorer (9) он выходит из строя:Internet Explorer: JQuery

function go() { 
    var selector = "span"; 
    console.log($); 
    answer = $(selector); // errors on this line. 
    return answer; 
} 

Какие выходы:

LOG: function(a,b){return new e.fn.init(a,b,h)} 
SCRIPT438: Object doesn't support this property or method 

Получается, что JQuery является там, и если я запустил $("span") на консоли IE, он будет работать. Так что я озадачен. Кто-нибудь испытал эту проблему раньше?

+1

Оказывается, это было слово «ответ», я должен был использовать его в другом контексте. Простое решение 'var' перед ответом решило проблему. Но не забывайте удалять операторы консольного журнала (или использовать нижеприведенное решение. – leech

+1

Убедитесь, что вы понимаете, что действительно делает ключевое слово 'var'. Без него вы по существу объявляете переменную как глобальную переменную. время, нет причин делать переменную глобальную (акцент на ** большинство ** времени). – kevin628

+0

Да, это не было бы проблемой, если бы я обратил на это внимание. – leech

ответ

4

IE предлагает функцию console.log только тогда, когда отладчик открыт. Удалите console.log($); и он должен работать.

Или вы можете исправить это следующим образом:

if (!window.console) { 
    (function() { 
     var names = ["log", "debug", "info", "warn", "error", "assert", "dir", "dirxml", 
     "group", "groupEnd", "time", "timeEnd", "count", "trace", "profile", "profileEnd"]; 
     window.console = {}; 
     for (var i = 0; i < names.length; ++i) { 
     window.console[names[i]] = function() {}; 
     } 
    }()); 
} 
+0

Спасибо за фантастическое решение обхода консоли. не моя проблема в этом случае (у меня было открытое окно консоли при тестировании), но очень полезное решение. – leech

+0

Я не автор этой функции. Или, может быть, не полный автор, не помню. –