14

ブラウザベースのアプリケーションでやりたいことの 1 つは、ユーザーがテキストを選択できるようにすることです (<textarea> ではなく、単なるテキストです!)、アプリケーションに小さなツールバーをポップアップ表示させます。次に、次のものとやり取りできます(私の場合は、注釈を追加します)。

Google で WYSIWYG エディターの作成に重点を置いていると思われるものをたくさん見つけましたが、それは私が望んでいるものではなく、そのほとんどは IE で機能しましたが、FF2 または 3 では機能しませんでした。IE7 (および可能であれば 6)、FireFox 2 & 3、および Safari 2で動作するブラウザー ウィンドウで現在選択されているテキストを返すことができる関数。Opera で動作する場合、それはおまけですが、必須ではありません。

誰にもこれを行う機能がありますか?または、どこから始めればよいか考えていますか?

4

6 に答える 6

17

この jQuery プラグインはクールですが、強調表示したテキストをタグでラップするという非常に特殊なタスクを実行します。これはまさにあなたが望むものかもしれません。ただし、無関係なマークアップをページに追加したくない (または追加できない状況にある) 場合は、代わりに次の解決策を試すことができます。

function getSelectedText() {
  var txt = '';

  if (window.getSelection) {
    txt = window.getSelection();
  }
  else if (document.getSelection) {
    txt = document.getSelection();
  }
  else if (document.selection) {
    txt = document.selection.createRange().text;
  }
  else return; 

  return txt;
}

この関数は、テキスト選択を表すオブジェクトを返します。これはブラウザー間で機能します (ただし、返されるオブジェクトはブラウザーによってわずかに異なり、追加のプロパティではなく、結果の実際のテキストに対してのみ信頼できると思います)。

注: 最初にそのコード フラグメントをここで発見しました: http://www.codetoad.com/javascript_get_selected_text.asp

于 2008-10-04T06:41:01.140 に答える
8

jQuerywrapSelection プラグインを見てください。それはあなたが探しているものかもしれません。

于 2008-08-13T23:52:35.400 に答える
1

Rangeの概要には、さまざまなブラウザでテキスト選択にアクセスする方法についての詳細があります。

私の経験では、これらのさまざまなAPIを直接操作するのは非常に不器用なので、wrapSelectionが機能する場合は、それを使用します。

于 2008-08-17T20:21:46.323 に答える
-2

選択に関する個々のブラウザの動作の概要をここに示します。

于 2008-08-17T20:25:28.047 に答える
-3

このコードはSafari、IE、Firefoxで動作します-お役に立てば幸いです

var str = (window.getSelection) ? window.getSelection() : document.selection.createRange();
str = str.text || str;
str = str + ''; // the best way to make object a string...
于 2008-08-17T20:35:22.440 に答える