2012-02-14 9 views
0

イメージの置き換えエラーが発生しました。異なるサイズの画像が元の画像にポップされます。jqzoomエラー:ノードが見つかりませんでした。

残念ながら、私のPCでは、ブラウザ(Firefox、chrome、safari)にかかわらず、エラーは「サイレント」であり問題は発生しません。

しかし、放火犯とクロムのツールでそれを追跡し、それがFirefoxであるため「ノードが見つかりませんでした」というエラーであることを示しているようだ(クローム:「NOT_FOUND_ERR:DOM例外8」)

これがあるべきjigoshopのすべての標準コード、WordPressプラグイン。それは、誰でも最初の場所に画像を置くので、画像サイズの関係を理解し​​ていない可能性があります。いずれの場合においても

、それはここで破壊される:ダウンここで(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(); 
}; 

document.body.removeChild(this.node); 

約13行ができないノードfind:はロードされた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 === html){ return true; } el = el.parentNode; } falseを返します。 }行665で

  2. 、直前:

    document.body.removeChild(this.node)。

これを追加します。

if(isInDocument(this.node)) 

これが起こってから例外を停止し、スクリプトを続行することができます。

+0

ポイント1は一目で反論理的ですが(2番目も同じですが)機能します。 :D – Rolice

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コードがなぜですか。問題はJavaScriptやjQueryよりjqzoomに関するものです。 – Jahmic

0

最新バージョンのjqzoomを使用してください。あなたはfind it on githubです。

関連する問題