У меня есть эта проблема о моем веб-сайте в IE (6,7,8):
'тип узла' является пустым или не объект
Ошибка относится к "f.nodeType" свойству. В основном f не определен, таким образом, проблема прежде, но я не могу зафиксировать его.
(от отладки панели инструментов разработчика IE это, кажется, эта строка, которая бросает ошибку) (autocolumn.min.js line 13
расширенный ниже для удобочитаемости)
Страница по http://www.donatellabernardi.ch/drupal
function split($putInHere,$pullOutHere,$parentColumn,height){
if($pullOutHere.children().length){
$cloneMe=$pullOutHere.children(":first");
$clone=$cloneMe.clone(true);
if($clone.attr("nodeType")==1&&!$clone.hasClass("dontend")){
^^^^^^^^^^^^^^^^^^^^^^^^^^ Chokes on
$putInHere.append($clone);
if($clone.is("img")&&$parentColumn.height()
Используя букмарклет "Firebug lite" (вы можете получить его здесь: http://getfirebug.com/firebuglite ), я смог определить место, где действительно возникает ошибка.
Похоже, что корень проблемы не в коде, который вы извлекли, а в самом jQuery.
Я заметил, что вы используете jQuery версии 1.2.6. Проблема заключается в методе clone-метода этой версии. Это приводит к ошибке в этой строке вашего кода:
$clone=$cloneMe.clone(true);
Я мог бы дать вам больше деталей, где именно происходит ошибка, но я не думаю, что это решит вашу проблему. В любом случае, это не очень хорошая идея - создавать обходной путь для несовершенного jQuery-кода. Я бы скорее рекомендовал попробовать более свежую версию jQuery (после беглого взгляда я увидел, что там метод клонирования реализован по-другому) и посмотреть, решит ли это вашу проблему.
EDIT: Извините, это не эта строка
$clone=$cloneMe.clone(true);
а вот эта:
$cache.append($(this).children().clone(true));
(строка 42 в autocolumn.js)
Что произойдет, если вместо этого вы воспользуетесь $ clone.get (0) .nodeType === 1
?
Рекомендуется использовать оператор строгого равенства ===
вместо ==
, если тип значения известен и неявное преобразование не требуется. Оператор строгого равенства также должен работать, даже если nodeType
будет undefined, null или «не объект»
.get (0)
, вероятно, не нужен. Я просто хотел убедиться, что работаю непосредственно с Element, а не над jQuery-Instance.