2010-08-09 3 views
1

При просмотре сайта, над которым я работаю в любой версии IE, я делаю сообщение с ошибкой, и единственное, что кажется загруженным, - это фон. На самом деле не уверен, как это сделать, я даже не уверен, что означает ошибка.Недопустимый аргумент в Internet Explorer

Ошибка недопустимый аргумент в строке 117.

Это отлично работает в Firefox, Safari и Chrome.

Вот URL: http://streamlinehome.com/wordpress/

ответ

6

117 точек в файл JQuery. Отладка кода происходит с ошибкой if (e) f [b] = d;

  • б "ширина"
  • d является "NaNem"

Отступив на CallStack вы звоните метод JQuery здесь

линии 63 в supersubs.js:

$ul.css('width',emWidth); 

Подняв несколько строк, вы увидите комментарий о clientWidth, и это, вероятно, где проблема начинаются. :)

var emWidth = $ul.add($LIs).add($As).css({ 
    'float' : 'none', 
    'width' : 'auto' 
}) 
// this ul will now be shrink-wrapped to longest li due to position:absolute 
// so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer 
.end().end()[0].clientWidth/fontsize; 
// add more width to ensure lines don't turn over at certain sizes in various browsers 

Так, глядя на него еще немного линия ... конец() [0] .clientWidth возвращает 0 и размер шрифта = 0, так что вы имеете 0/0, который является NaN

+0

Так что ошибка находится в вашем supersubs.js подключаемом модуле. :) Разве вы не просто любите сторонний код. – epascarello

+0

+1 Его всегда приятно видеть потрясающий бит четкой, пошаговой, отладки – icc97

3

Я могу» t дать полный ответ на ваш вопрос, но я могу показать вам, почему вы получаете ошибку «Недопустимый аргумент».

Короче говоря, IE пытается установить ширину элемента в "NaNem". Попытка сделать это заставит IE генерировать ошибку «Недопустимый аргумент».

Но почему IE пытается установить ширину этого элемента для этого бессмысленного значения? Эта ширина сначала появляется в функции внутри плагина supersubs. Следующий код пытается найти ширину эм-тире в текущем шрифте ($$ содержит <ul> элемент):

var fontsize = $('<li id="menu-fontsize">&#8212;</li>').css({ 
    'padding' : 0, 
    'position' : 'absolute', 
    'top' : '-999em', 
    'width' : 'auto' 
}).appendTo($$).width(); //clientWidth is faster, but was incorrect here 

Однако IE вычисляет fontsize в 0.

В дальнейшем, значение используется эта переменная:

var emWidth = $ul.add($LIs).add($As).css({ 
    'float' : 'none', 
    'width' : 'auto' 
}) 
// this ul will now be shrink-wrapped to longest li due to position:absolute 
// so save its width as ems. Clientwidth is 2 times faster than .width() - thanks Dan Switzer 
.end().end()[0].clientWidth/fontsize; 

кажется clientWidth здесь также 0, и поэтому это дает emWidth значение NaN.

Наконец, следующий добавляет «Em» блок для emWidth (отсюда NaNem) и пытается установить ширину <ul> в "NaNem".IE не имея это и дает ошибку «Неверный аргумент»:

emWidth += 'em'; 
// set ul to width in ems 
$ul.css('width',emWidth); 

Однако, я боюсь, что я не могу сказать, почему IE возвращает 0 для fontsize. Я бы рискнул догадаться о потенциальной ошибке в плагине supersubs - возможно, об этом стоит рассказать об этом на форумах jQuery или, как подсказывает сам Supersubs, JQuery Google Group?

0

Кажется, проблема 64-разрядного Internet Explorer работает на 64-разрядной ОС. Пытаясь запустить IE 64 бит, этого не происходит.

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