問題タブ [getselection]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - キャレットの正確な位置を取得する
tinyMCEで現在のキャレット位置を取得するにはどうすればよいですか? この質問「カーソル位置またはカーソルが TinyMCEにある行の番号を取得する」を参照すると、tinyMCE で行番号を取得する方法が記載されていますが、実際のキャレット位置を取得する方法に関する参照が見つかりませんか? tinyMCE をリアルタイム コラボレーション用のドキュメントとして使用しているため、これが必要です。そのため、同じドキュメントに書き込むクライアントのキャレットの位置を知って、いくつかのイベント (キーストローク、クリックなど) で位置をブロードキャストできるようにする必要があります。 )、あるクライアントの位置にカスタムキャレットをペイントして、他のクライアントがどこで書いているか編集しているかを知ることができます。
私が見つけた唯一の解決策は、コンテンツの後にスパンを追加し、それを選択して次のように削除することでした:
次に、挿入したら、これを行います...
これはそれを回避する唯一の方法ですか?
EDIT:実際には、上記はカーソルの位置をコンテンツの最後に設定するだけで、ブックマークを使用してすでに処理しています。
カーソルの位置を取得できるものがない可能性はありますか?
java - JList で選択したアイテムを取得してキャストを使用する方法
私のプログラムの一部には、JList
場所のリストがあり、のアイテムを使用してJList
その場所の天気を出力する API を取得しました。だから今、私はそれを行うことができません
しかし、エラーがあります: タイプの不一致: int から WeatherAPI に変換できません。
これは動作する API の例です。
したがって、最初のオプションを取得したくありません。ユーザーが選択した場所を取得したいのです。それはすべてキャストに関するものです。私もこれを試しましたが、うまくいきませんでした:
「firstMatch を使用する」というコードの残りの部分を取得しましたが、タイプが WeatherAPI の場合にのみ使用します。
javascript - anchorNode/anchorOffset と focusNode/focusOffset を保存して復元する方法は?
次のコードでは:
範囲を置換するときは、anchorOffset と focusOffset が入れ替わります。つまり、アンカーは選択範囲の左端にリセットされ、フォーカスは右端にリセットされます。これは、選択範囲が実際に開始および終了した端に関係ありません。範囲を追加するときにアンカーとフォーカスが無視される(または少なくとも保存されない)ようで、デフォルトで左アンカーと右フォーカスを想定しています。
これはめちゃくちゃ迷惑です!
I don't hold out much hope, but is there any way I'm missing that I can work around this behavior. I would really love to be able to restore the original anchor and focus positions.
Works same in chrome and firefox.
EDIT
Ok have worked out a partial answer:
HOWEVER, this won't work in IE9+ as IE doesn't implement the extend method. So now the question becomes, how to make IE play nice in this regard?
javascript - getSelection が、カスタム テキスト入力で選択されたテキストを見つけられない
新しいリアルタイム テキスト コラボレーション サービス Firepadを使用しています。
getSelection
ユーザーが選択したボックス内のテキストに対してJavaScript メソッドを使用したいと考えています。
ただし、何らかの理由でコードが機能しません。
私のJavaScript:
HTML:
javascript - IE10 で壊れた getSelection()
プロジェクトでwindow.getSelection()メソッドを使用して、引用可能なテキストを作成します
IE10 を除くすべての最新のブラウザーで問題なく動作します。IE10 コンソールでは正しいテキストが返されますが、選択が壊れています。
私が使用した唯一のコード:
このコードは、mouseupイベントで呼び出します。
誰かが解決策を知っていますか?
javascript - window.getSelection() の後に次の文字を取得する
window.getSelection() の後に次の文字を取得する方法はありますか? 選択したテキストの後の文字がスペースかどうかを確認する必要があります...
編集:回答ありがとうございます!私は基本的にこのリンク を使用してテキストを強調表示していますが、完全な単語に限定したいと考えています。以下に提示された解決策 (Steven による) を出発点として使用しました。私は次のことがうまくいくはずだと思います:
(上記のリンクでは、makeEditableAndHighlight 関数呼び出しの直後にこのコードを使用しました)。
javascript - getSelection.toString() - toString() を使用せずに?
選択範囲からテキストを抽出し、TTS サービスに送信する必要があります。TTS サービスは、ストリーム URL と各単語の一連のインデックスを返し、単語の開始位置と終了位置を (時間とテキストの両方で) 示します。
ユーザーがストリームを再生するとき、読み上げられた各単語を強調表示したいと思います。これを行うには、各単語にテキスト インデックスを使用することはできません。元の HTML ノードに戻すことができないためです。したがって、toString()
厳密にテキストであるテキスト インデックスを使用できないのはなぜですか。
これまでのところ、範囲オブジェクトの開始コンテナーと終了コンテナーを使用して TreeWalker を作成し、それを使用して範囲内のすべてのテキスト ノードを抽出しています。
問題:
window.getSelection().toString()
表示されていないノードを本質的に無視します。これには<script>
、ノード、<style>
ノード、ノード付きdisplay: none;
などが含まれます。TreeWalker を使用してもそうではありません。
TreeWalker でこれらすべてのノードを手動でスキップできることはわかっていますが ( alt 属性とスクリプトが含まれていない getSelection で提案されているように)、かなり複雑になる可能性があります (特に各ノードの可視性を確認する場合)。
これに入る前に、私がリンクした質問が回答されて以来、利用可能な新しいメソッドまたはライブラリがあるかどうかを尋ねたいと思いましたか?
コードをクロス ブラウザーにするつもりはなく、プレーンな Javascript を使用しています (つまり、jQuery を使用していません)。
javascript - window.getSelection が Chrome で null を返す
localhost:8080 で実行されている Spring アプリがあります。このアプリでは、 をwindow.getSelection
返しますnull
。それを再割り当てしている可能性のあるJavascriptライブラリではないかと思いましたが、確認したところ何も見つかりません。何もない別のページ (最低限のページ) を作成しましたが、そのページも同じように動作しています。
また、このマシンで通常の Web サーバーを実行しているので、そこで試してみることにしましたが、同じ動作しか確認できませんでした。
次に、動的 IP に関連付けられたホスト名を使用して、ネットワークの外部からページにアクセスしようとしました。これも私に同じ動作を与えました。
ただし、ブラウザーで開いた他のすべてのページ (つまり、このマシンでホストされていない通常の Web ページ) は正しく動作し、null 以外の値を返します。
これを Firefox でチェックアウトしたところ、ありがたいことに、そこで動作するようです。なぜこのような行動が見られるのか、私は興味があります。Chrome は、ユーザーがlocalhost
.