0

试图追踪错误的图像替换错误。在原始 img 源中弹出不同大小的图像。

不幸的是,在我的电脑上,无论浏览器(Firefox、chrome、safari)如何,错误都是“无声的”,不会导致问题。

但是,使用 firebug 和 chrome 工具对其进行跟踪,似乎表明这是因为 Firefox 中出现“未找到节点”错误(chrome: “NOT_FOUND_ERR: DOM Exception 8”)

这应该是来自 WordPress 插件 jigoshop 的所有标准代码。这可能是因为无论是谁把图像放在首位,都不了解图像大小的关系。

无论如何,它在这里被打破:

document.body.removeChild(this.node);

这里大约 13 行(jquery.jqzoom-core.js 中的第 653 行)

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

4 回答 4

3

我找到了解决方法。不过,我不会称其为正确的解决方案。解决方法是:

  1. 将以下内容添加到 jquery.zqzoom.core.js 的顶部(从某个被遗忘的来源找到的函数):

    函数 isInDocument(el) { var html = document.body.parentNode; while (el) { if (el === html) { return true; } el = el.parentNode; } 返回假;}

  2. 在第 665 行,就在之前:

    document.body.removeChild(this.node);

添加这个:

if(isInDocument(this.node))

这将阻止异常发生并允许脚本继续。

于 2012-02-16T04:27:59.607 回答
0

这并没有解决我的问题。但更换

document.body.removeChild(this.node);

和:

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

解决了我的问题,不确定这是否是正确的方法。

于 2012-08-27T15:11:18.370 回答
0

removeChild()函数要求您引用要删除的节点的父节点。Document.body 不是您要删除的那个的父节点。因此,您必须获取节点的父节点并在removeChild().

*parentnode*.removeChild(*node trying to remove*);
于 2013-06-19T17:15:17.693 回答
0

使用最新版本的 jqzoom。你可以在 github 上找到它

于 2015-07-31T14:45:42.983 回答