Ошибка jqzoom: узел не найден - PullRequest
       26

Ошибка jqzoom: узел не найден

0 голосов
/ 14 февраля 2012

Попытка отследить ошибку замены изображения. Изображение другого размера появляется в исходном img источнике.

К сожалению, на моем ПК независимо от браузера (Firefox, Chrome, Safari) ошибка «тихая» и не вызывает проблемы.

Однако, отслеживание его с помощью инструментов Firebug и Chrome, похоже, показывает, что это происходит из-за ошибки «Узел не найден» в Firefox (chrome: «NOT_FOUND_ERR: DOM Exception 8»)

Это должен быть весь стандартный код из jigoshop, плагина WordPress. Это может быть потому, что тот, кто ставит изображения на первое место, не понимает взаимосвязи размеров изображения.

В любом случае, он ломается здесь:

document.body.removeChild(this.node);

Здесь около 13 строк (строка 653 в jquery.jqzoom-core.js)

this.fetchdata = function () {
var image = $(this.node);
var scale = {};
this.node.style.display = 'block';
$obj.w = image.width();
$obj.h = image.height();
$obj.pos = image.offset();
$obj.pos.l = image.offset().left;
$obj.pos.t = image.offset().top;
$obj.pos.r = $obj.w + $obj.pos.l;
$obj.pos.b = $obj.h + $obj.pos.t;
scale.x = ($obj.w / smallimage.w);
scale.y = ($obj.h / smallimage.h);
el.scale = scale;
document.body.removeChild(this.node);
$('.zoomWrapperImage', el).empty().append(this.node);
//setting lens dimensions;
lens.setdimensions();
};

узел, который он не может найти, это:, который находится после загруженного html здесь:

<div class="zoomWrapperImage" style="width: 100%; height: 496px;">
<img style="position: absolute; border: 0px none; display: block; left: -5000px; top: 0px;" src="http://xyz.com/shop/wp-content/uploads/2011/10/go-291x496.jpg">consoleName="jQuery.data"consoleKind="Element"consoleFramework="jQueryUI-1"consoleId="73"
</div>

Я слишком много вникал в jquery. Итак, 2 вопроса:

  1. Как решить эту проблему?
  2. Каков общий процесс исправления ошибок такого типа?

Ответы [ 4 ]

3 голосов
/ 16 февраля 2012

Я нашел обходной путь.Я бы не назвал это правильным решением.Обходной путь:

  1. Добавьте следующее в начало jquery.zqzoom.core.js (функция найдена из какого-то забытого источника):

    функция isInDocument (el){var html = document.body.parentNode;while (el) {if (el === html) {вернуть true;} el = el.parentNode;} вернуть ложь;}

  2. в строке 665, непосредственно перед:

    document.body.removeChild (this.node);

addthis:

if(isInDocument(this.node))

Это остановит исключение и позволит сценарию продолжить.

0 голосов
/ 31 июля 2015

Используйте последнюю версию jqzoom.Вы можете найти его на github .

0 голосов
/ 19 июня 2013

Функция removeChild() требует от вас ссылки на родителя узла, который вы пытаетесь удалить.Document.body не является родительским узлом того, который вы пытаетесь удалить.Таким образом, вы должны получить родительский узел и использовать его в removeChild().

*parentnode*.removeChild(*node trying to remove*);
0 голосов
/ 27 августа 2012

это не решило мою проблему.но замена

document.body.removeChild(this.node);

на:

this.node.parentNode.removeChild(this.node);

решила мою проблему, не совсем уверенный, если это правильный способ сделать это.

...