[英]jqzoom error: Node was not found
嘗試查找不良的圖像替換錯誤。 原始img源中會彈出不同大小的圖像。
不幸的是,在我的PC上,無論使用什么瀏覽器(Firefox,chrome,safari),該錯誤都是“無聲的”,並且不會引起問題。
但是,使用firebug和chrome工具對其進行跟蹤似乎表明這是由於Firefox中出現“未找到節點”錯誤(chrome:“ NOT_FOUND_ERR:DOM異常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個問題:
我找到了一種解決方法。 不過,我不會將其稱為正確的解決方案。 解決方法是:
將以下內容添加到jquery.zqzoom.core.js的頂部(從某些被遺忘的源中找到的函數):
函數isInDocument(el){var html = document.body.parentNode; while(el){if(el === html){返回true; } el = el.parentNode; 返回false; }
在665號線之前:
document.body.removeChild(this.node);
添加:
if(isInDocument(this.node))
這將阻止異常的發生並允許腳本繼續。
這沒有解決我的問題。 但更換
document.body.removeChild(this.node);
與:
this.node.parentNode.removeChild(this.node);
解決了我的問題,不太確定這是否是正確的方法。
removeChild()
函數要求您引用您要刪除的節點的父節點。 Document.body不是您要刪除的父節點。 因此,您必須獲取節點的父節點並在removeChild()
使用它。
*parentnode*.removeChild(*node trying to remove*);
使用最新版本的jqzoom。 您可以在github上找到它 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.