1

現在、jquery に基づく非常に小さな wysiwyg エディターに取り組んでいます。IEやChromeは気にしません。Firefoxだけです。私の問題は、選択が設定されている場合に href 属性の値を取得するためのリンクにあるかどうかを見つけることです。クリックでリンクのノードを見つけ、ダブルクリックで必ず本体。デザインモードです。

クリックと dblclick の私のイベント ハンドラー。vars current_selection、current_node、iframe、および container はグローバルです。

selection_handler:function()
{
  current_selection = iframe.getSelection();
  current_node = current_selection.anchorNode;
  if(current_node.nodeName == "#text")
  {
    current_node = current_node.parentNode;
  }
  $('#log').text(current_node.nodeName);
},

フォーマットされていないテキストをクリックすると、ログに「body」などの mit が表示されます。execCommand('createLink',...) でリンクを追加すると、ログに「A」が表示されます。それはうまくいきます。リンクされた単語を最初から最後まで2クリックでマークすると、ログに「A」が表示されます。しかし、ダブルクリックすると、常に「ボディ」が表示されます。そのため、href 属性を取得できません。

ハンドラーは init で定義されています。

init:function(options)
{
  ...

  iframe = $('#wysiwyg-'+container.attr('id'))[0].contentWindow;
  iframe.addEventListener('dblclick',methods.selection_handler,false);
  iframe.addEventListener('click',methods.selection_handler,false);

  ...
}

誰かが何が悪いのか考えていますか?

4

1 に答える 1

0

リンクを dblclick すると、通常は完全なリンクが選択され、選択が変更されます。

代わりに event-object を使用して、クリックされた要素を特定します。

selection_handler:function(e)
{
  current_selection = window.getSelection();
  current_node = e.target;
  //...more code
}
于 2012-09-09T16:00:28.790 に答える