2016-10-16 11 views
1

私には、テキストを含む要素を持つsvgがあります。ズームでテキストを選択できるようになっていますか?

var zoom = d3.behavior.zoom().on("zoom", function() { 
       inner.attr("transform", "translate(" + d3.event.translate + ")" + 
              "scale(" + d3.event.scale + ")"); 
      }); 
     svg.call(zoom); 

私はテキストを持っているために確認する必要があり必要なJavaScript/HTML/CSSの変更がどのようなものです:私はズームを追加しない限り、私は、私が行うことができるよ、このテキストを選択できるようにしたいです選択可能?

+0

:あなたは、テキスト要素と対話する際に物事を正しく設定するには、イベントの伝播を停止これは設計上の選択でした。私はFirefoxを使用しています。私のインスペクタはドラッグを開始するときに 'moz-user-select:none; 'と表示します。 – db2791

答えて

2

ここではいくつかのイベントの競争が行われています。ズーム/パンイベントはより高いレベルにあり、テキストのテキスト選択を食べています。私はUAが何であるかに慣れていないんだけど、ブラウザのバグの面で、私が思う@RobertLongson

<!DOCTYPE html> 
 
<meta charset="utf-8"> 
 
<body> 
 
    <script src="//d3js.org/d3.v3.min.js"></script> 
 
    <script> 
 
    var width = 500, 
 
     height = 500; 
 

 
    var zoom = d3.behavior.zoom() 
 
     .scaleExtent([1, 10]) 
 
     .on("zoom", zoomed); 
 

 
    var svg = d3.select("body").append("svg") 
 
     .attr("width", width) 
 
     .attr("height", height) 
 
     .call(zoom) 
 
     .append("g"); 
 

 
    svg.append("text") 
 
     .attr("x", 250) 
 
     .attr("y", 250) 
 
     .text("This is some text.") 
 
     .on("mousedown", function() { 
 
     d3.event.stopPropagation(); 
 
     }); 
 

 
    function zoomed() { 
 
     svg.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")"); 
 
    } 
 
    </script>

+0

はい!ありがとう、それは完璧に動作します! – db2791

関連する問題