2016-10-24 2 views
1

私はD3バージョン4.2.8にd3.zoom()関数を使用していますのEventHandler発射ないイベントをズームします。私は、マウスポインタを移動カーソルに変更したい、というのも、私は図の上に "自分自身をドラッグ"している限り。マウスボタンを放すとすぐに「十字線」に戻ります。d3jsは私の力図を横切って移動するために、適切

私は、イベントが発生しているときに表示するために、2つのコンソールログを使用。コンソールでは、次のように動作します。マウスボタンをクリックすると、「ズーム開始」と表示され、すぐに「ズーム終了」と表示されます。動作しません

だけの事は「移動」にカーソルの変更です:コンソールは言うものの、カーソルが「デフォルト」のまま「ズームが始まります」。マウスボタンを離した後で(「ズーム終了」が発生してからすぐに「十字線」に変更した後)、「移動」に変更されます。

はなぜコンソールは、正しい時刻にメッセージを印刷しないが、私は再びマウスボタンを離れた後、カーソルが変更されますか?

// Prepare Zoom and Panning settings 
var zoom = d3.zoom() 
    .scaleExtent([.1, 10]) 
    .on("start", zoomBegin) 
    .on("end", zoomFinish) 
    .on("zoom", zoomed); 

// View is needed as the new D3V4 zoom cannot be applied directly on the SVG but a group element  
var view = svg.append("g"); 

svg.call(zoom) 
    //prevent triggering the zoom on dblclicks 
    .on("dblclick.zoom", null); 

function zoomed() { 
    view.attr("transform", d3.event.transform); 
} 

function zoomBegin() { 
    console.log("Zoom begin"); 
    body.style("cursor", "move"); 
} 

function zoomFinish() { 
    console.log("Zoom finish"); 
    //body.style("cursor", "crosshair"); 
} 
+1

私は[ここ](http://plnkr.co/edit/Jg9ZzA0oTRwktt7BA5ZI?p=preview)、それを試してみました。 IE11とEdgeで私のために働く。開発ツールを公開していない場合は、** chrome **でも動作します**。開発ツールが開いている場合は、あなたが記述したことを行います。 [実際のバグレポート(https://bugs.chromium.org/p/chromium/issues/detail?id=26723)があります。 – Mark

+0

OMGはい、そうです、それはChromeの開発ツールです。開発ツールなしでFirefoxとChromeで動作します。ありがとう、私は正しい解決策としてマークすることができるように答えとしてあなたのコメントを投稿できますか?ありがとうございました! – olop01

答えて

1

私のコメントで述べたように、私はこれを試しましたhere。それはIE11とEdgeで私のために働く。開発ツールを公開していない場合は、を開いてクロムでも動作します。開発ツールが開いている場合は、あなたが記述したことを行います。それについての実際の古いバグレポートhereは、すべての厄介な詳細を記述しています。

コード私はそれなしで投稿することはできません原因:)

function zoomBegin() { 
    console.log("Zoom begin"); 
    svg.style("cursor", "move"); 
} 

function zoomFinish() { 
    console.log("Zoom finish"); 
    svg.style("cursor", "auto"); 
} 
+0

ありがとう! – olop01

関連する問題