2012-02-14 48 views
0

試圖追查一個錯誤的圖像替換錯誤。原始img源文件中會彈出不同大小的圖像。jqzoom錯誤:未找到節點

不幸的是,在我的電腦上,無論瀏覽器(Firefox,Chrome,safari)如何,錯誤都是'無聲',並且不會引起問題。

然而,螢火蟲和Chrome工具跟蹤它,似乎表明,這是因爲在Firefox(鉻:「NOT_FOUND_ERR:DOM異常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. 修復這類錯誤的一般過程是什麼?

回答

3

我找到了解決方法。不過,我不會稱之爲正確的解決方案。解決方法是:

  1. 添加以下jquery.zqzoom.core.js的頂部(從一些遺忘源發現功能):

    功能isInDocument(EL){ VAR HTML =文檔。 body.parentNode; (el){el === html} { return true; } el = el.parentNode; } return false; }

  2. 在線665,就在:

    document.body.removeChild(this.node);

補充一點:

if(isInDocument(this.node)) 

這將阻止發生異常,並允許腳本繼續。

+0

第一點是一見鍾情(第二也是)反邏輯,但它的作品。 :D – Rolice 2012-06-13 20:13:26

0

這並沒有解決我的問題。 但更換

document.body.removeChild(this.node); 

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

解決了我的問題,真的不知道,如果是做正確的方式。

0

removeChild()函數需要您引用您嘗試刪除的節點的父節點。 Document.body不是您嘗試刪除的父節點。所以你必須得到節點的父節點,並在removeChild()中使用它。

*parentnode*.removeChild(*node trying to remove*); 
+0

感謝您的澄清。但更重要的是,爲什麼jqzoom代碼在非存在的節點上運行此代碼。問題更多的是關於jqzoom而不是關於JavaScript或jQuery。 – Jahmic 2013-06-20 04:58:47