尝试追踪错误的图像替换错误。一个不同大小的图像弹出原始的img源。
不幸的是,在我的电脑上,无论浏览器(Firefox,Chrome,safari),错误都是“无声”,并且不会导致问题。
然而,使用firebug和chrome工具跟踪它似乎表明这是因为Firefox中的“找不到节点”错误(chrome:“NOT_FOUND_ERR:DOM异常8”)
这应该是来自jigoshop的所有标准代码,一个WordPress插件。这可能是因为无论谁将图像放在首位,都不了解图像尺寸的关系。
无论如何,它在这里打破:
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个问题:
答案 0 :(得分:3)
我找到了解决方法。不过,我不会称之为正确的解决方案。解决方法是:
将以下内容添加到jquery.zqzoom.core.js的顶部(从一些被遗忘的来源找到的功能):
function isInDocument(el){ var html = document.body.parentNode; 而(el){ if(el === html){ 返回true; } el = el.parentNode; } 返回false; }
在第665行,就在之前:
document.body.removeChild(this.node);
添加:
if(isInDocument(this.node))
这将停止发生异常并允许脚本继续。
答案 1 :(得分:0)
这并没有解决我的问题。 但更换
document.body.removeChild(this.node);
使用:
this.node.parentNode.removeChild(this.node);
解决了我的问题,不确定这是否是正确的方法。
答案 2 :(得分:0)
removeChild()
函数要求您引用要删除的节点的父节点。 Document.body不是您要删除的父节点。因此,您必须获取节点的父节点并在removeChild()
。
*parentnode*.removeChild(*node trying to remove*);
答案 3 :(得分:0)
使用最新版本的jqzoom。你可以find it on github。