2017-01-05 7 views
0

私はd3.geo.zoom.js libraryを使用しています。誰かがダブルクリックして地球をフリーズさせるとエラーになるという点を除いてユーザーの入力に応答して停止します。私はプロジェクトを再ダウンロードし、変更を加えずに実行し、同じエラーが発生しました。 、codeasart.com/globed3.geo.zoom.jsを使用してエラーをスローするダブルクリック

そして、あなたは簡単にそれをダブルクリックして複製することができますエラー、次のとおりです:ここで

は私の実装です

(index):108 Uncaught TypeError: Cannot read property 'preventDefault' of null 
at SVGPathElement.<anonymous> ((index):108) 
at SVGPathElement.t (d3.v3.min.js:1) 
at SVGPathElement.<anonymous> (d3.geo.zoom.js:29) 
at SVGPathElement.t (d3.v3.min.js:1) 
at d3.v3.min.js:1 
at c (d3.v3.min.js:3) 
at SVGPathElement.<anonymous> (d3.v3.min.js:3) 
at a (d3.v3.min.js:3) 
at Object.c (d3.v3.min.js:3) 
at Rn (d3.v3.min.js:1) 

エラーに示した第1行、インデックス:108、

d3.event.sourceEvent.preventDefault(); 

try/catchブロックに入れてみましたが、解決しませんでした。

ないD3自体の唯一の他のラインはd3.geo.zoom.jsです:29、である:

event.zoom.apply(this, arguments); 

私もtry/catchブロックであることを試してみました。運がない。

これをデバッグするには、javascript/d3イベントモデルだけで十分ではありません。どんな助け?

答えて

0

私は(誰が答えたかどうかを確認するために数分おきにチェックする)これを離れて打つ維持し、最終的にd3.geo.zoom.jsのライン18上のことを決定:

point = position(projection, mouse0); 

ポイントが偽(代わりのでした2回のクリックで2倍の配列)。

私はラインを追加しました:

if(!point) return; 

をそして、それは物事を固定しているようです。

マウスを使用せずに非常にゆっくりとクリックすると、エラーが発生しないという点を除いて、開始点と終了点が同じ場合は数学が壊れるという単純な問題だと思います。実際のダブルクリックのみ。

関連する問題