2016-04-04 20 views
1

私はd3スクリプトにブートストラップとjqueryを追加するだけです。これは主に動作していますが、右クリック/コンテキストメニューのイベントは表示されなくなりました。マイセットアップコードは次のようになります。d3コンテキストメニューが起動しない

this.svg_canvas = d3.select("#" + this.container_id) 
    .append("svg") 
    .attr("width", this.width) 
    .attr("height", this.height) 
    .on("click", this._selectNodes.bind(this)) 
    .on("mousedown", this._handleMouseDown.bind(this)) 
    .on("contextmenu", function(data, index) { graph_view._showContextMenu(data, index); }) 
    .call(this.zoom_behavior.bind(this)) 
; 

それは他のすべてのジェスチャーことを言及する価値があります - クリックし、マウスダウン、ズームは - うまく動作しているように見えます。

これを表示する方法やこれをデバッグする方法のアイデアはありますか?

+0

ただの野生の推測。あなたの 'mousedown'コードが、デフォルトの' contextmenu'イベントが起動しないようにする可能性はありますか? – JSBob

+1

Doh。私は間違ったデバッグ文に惑わされていました。 'mousedown'と' contextmenu'イベントはうまくいきません。間違ったCSSが、コンテキストメニューが表示されないようにしていました。一緒に移動し、ここには何も見えません... –

答えて

0

私はこれは本当に答えではない怖い、誰かが質問をupvoted以来、私は私が見つけたもの、それらを伝えるために彼らにそれを借りて...

私は.onにデバッグ文を置きます( 「コンテキストメニュー」)に記載の方法:

var svg_canvas = d3.select('#canvas-id') 
    .append('svg') 
    ... 
    .on('contextmenu', function(d) { 
     console.log('>>> contextmenu', d); 
     handleContextMenu(d); 
    }) 
    .call(zoomBehavior) 
; 

...と私はそれが)(私のhandleContextMenuを呼んでいたが、私のメニューが表示されていなかったことに気づきました。私がメニューを生成したHTMLをコメントアウトしたことに気付くまでにはしばらく時間がかかりましたが、その後は修正が簡単でした。

var context_menu = d3.select('#context-menu') 
    .on('mouseup', ...) 

を... DOMには#コンテキストメニューIDがなかったにもかかわらず:まだ私をperplexes何

はd3は、この行にエラーが発生しなかったことです。

+0

あなたは基本的に書いています - 選択要素と一致する要素に対してはonメソッドを実行します。一致するものはエラーではなく、単にノーオペレーションではありません。 –

関連する問題