問題タブ [caret]
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.
batch-file - cmd.exe が < > ^ のようなシェルの特殊文字を解釈しないようにする方法
いくつかのパラメーターを受け入れて EXE を実行する Windows CMD スクリプトがあります。最初にいくつかのハードコードされた引数を渡し、次にユーザーからのすべてのパラメーターを渡します。CMD スクリプトは次のようになります。
ユーザーは、次のように Windows シェルから CMD スクリプトを実行します。
<
>
私が抱えている問題は、CMD スクリプトのパラメーターにや などのシェル特殊文字が含まれている場合^
、ユーザーはそれぞれの前に 3 つのキャレット^
シェル エスケープ文字を付けて、これらをエスケープする必要があることです。
2 つの例
1) 引数ten>one
を EXE に渡すには、ユーザーは次のように CMD を起動する必要があります。
この理由は、シェルの特殊文字^
と>
がコマンド シェルによって 2 つのレベルで解釈されるためです。最初はコマンド ラインで、2 番目は CMD スクリプト内です。そのため、キャレット^
シェル エスケープ文字によるシェル エスケープを 2 回適用する必要があります。問題は、これがユーザーにとって自明ではなく、見た目が悪いことです。
この例では、より適切な解決策は、引数を二重引用符で囲むことです。ただし、これは、引数にリテラルの二重引用符を含む、より複雑な例ではうまくいきません。
2) 引数"^
を EXE に渡すには、ユーザーは次のように CMD を起動する必要があります。
私の場合、制御文字、つまりコード ポイント 0x20 から 0x7E を除く、下位 ASCII 文字の任意のシーケンスを含む引数をサポートしたいと考えています。ユーザーが特定のシェル特殊文字をキャレットでエスケープする必要がある例があることを理解しています。ただし、ユーザーが EXE ではなく CMD スクリプトを呼び出しているという理由だけで、これらのケースで毎回3 つのキャレットを使用する必要はありません。
この問題は、CMD スクリプトを同じことを行う EXE に置き換えることで解決できます。ただし、シェルの特殊文字を解釈せずにパラメーターを EXE に渡すように CMD スクリプトを変更する方法はありますか?
javascript - IEのjCaretプラグインを使用してキャレットポジションを取得する
IEのjCaretプラグインに問題があります。
テキストエリア内のキャレット位置を取得したい。
私のコードは次のようになります。
IEの問題は、textareaが1行しかない場合にのみ正しい結果が得られることですが、複数行がある場合は結果が間違っています。IEでは、改行に1文字余分にかかるようです。では、IEで改行を削除するにはどうすればよいですか?
wpf - TextBox のキャレットの終了位置を取得して、キャレットを次の TextBox に配置します
キャレットで右に移動できないように、WPF テキストボックスでキャレットの終了位置を見つけるにはどうすればよいですか?
wpf - WPFRichTextBox-現在のキャレット位置で単語全体を取得します
WPFリッチテキストボックスでスペルを有効にしましたが、スペルの提案を含むコンテキストメニューが表示される前に、現在のキャレット位置でスペルミスのある単語を取得したいと考えています。
javascript - contentEditableキャレットの位置を取得します
要素にキャレットの位置を設定する方法については、クロスブラウザーの優れた回答がたくさん見つかりましたが、そもそもキャレットの位置を取得する方法については何も見つかりませんでした。contentEditable
私がやりたいのは、のdiv内のキャレットの位置を知ることですkeyup
。contentEditable
したがって、ユーザーがテキストを入力しているときは、いつでも要素内のキャレットの位置を知ることができます。
windows - すべてのアプリケーションでキーボード カーソルの位置/座標を取得する
現在、関数を使用してGetCaretPos()
、GetGUIThreadInfo()
現在のキーボードカーソル/キャレット座標を取得しています。これらは、メモ帳やワードパッドなどのアプリケーションでは適切に機能し、正しい座標を返しますが、Firefox、Thunderbird などのアプリケーションでは、キーボード カーソルがどこにあっても、返される座標は常に 0, 0 です。
これらのアプリケーションでキーボード カーソル/キャレット座標を取得することが不可能ではないことはわかっています。なぜなら、これらのアプリケーションでYahoo KeyKey IME を使用すると、キーボード カーソルが置かれている場所にダイアログがポップアップするからです。
問題は、KeyKey はオープン ソースではないため、それがどのように行われているのかわかりません。
誰かが私を正しい方向に向けることができたり、使用する正しい機能を知っていれば、それは大歓迎です!
javascript - PreventDefault()、スクロールとアクセシビリティ
JavaScriptを利用したサブウィンドウをサイトに追加しています。基本的に、UIの一部は、ユーザーがリンクをトリガーするまで画面の左端から離れた位置に配置されます。次に、表示された位置に移動します。私は一連の5つのテストケースを持っていますが、それらを個別にリンクするためのレピュテーションポイントをまだ取得していません。
アクセシビリティの目的で、ドキュメントフラグメントを含むリンクを使用したいので、次のようになります。
対応するJavaScriptを使用して(jQueryを使用):
#quicklinks HREFは、スクリーンリーダーの内部カーソル(別名カレット)を、新しく表示されたUIの先頭にリダイレクトします。[クイックリンク]サブウィンドウに対応するリンクがあり、カーソルをドキュメントの主要部分にリダイレクトします(<a href="#main" id="close-quicklinks"></a>
)。これはテストケース1で実際に動作していることがわかります。スクリーンリーダーで聞くと(私はNVDAでテストしています)、スクリーンリーダーは、リンクがトリガーされたときにクイックリンクにスキップし、メインドキュメントに戻ります。クイックリンクの終了リンクがトリガーされたとき。
また、ドキュメントの断片に応じてページを上下にスクロールしますが、これは醜くて煩わしいものです。これは、次を使用して抑制することができます。window.preventDefault()
テストケース2を参照してください。これは非常にスムーズに機能し、ドキュメントをスクロールしません。したがって、次のようになります。
e.preventDefault(); });
残念ながら、preventDefault()を呼び出すと、ブラウザがカーソルを正しい場所に移動できなくなります。目の不自由なユーザーはそこでリンクをトリガーできます。その後、スクリーンリーダーは、クイックリンクUIではなく、ソースコード順に次のアイテムに進みます。これを修正する最も簡単な方法は、トリガーリンクの直後にクイックリンクサブウィンドウを定義するHTMLを配置することです。しかし、これが目的のCMSは、メニューに挿入されたHTMLの大きなブロックではうまく機能しないため、それはできません。
スクロールをなくすために、他のいくつかのアプローチを試しました。テストケース3は、ウィンドウを手動でスクロールバックします。
...これは機能しますが、下にスクロールしてから上に戻るため、目に見えてぎくしゃくした効果があります。これは、テストケース1よりも優れています。
テストケース4では、内部カーソルを手動で移動することを期待して、preventDefault()をfocus()と組み合わせて使用してみました。
しかし、#quicklinksはDIVであり、フォーカス可能な要素ではないため、機能しませんでした。クイックリンクHTMLに非表示のフォーカス可能な要素を追加できると思いますが、それは厄介です。
テストケース5では、ターゲット要素からID属性を削除し、onhashchangeイベントを使用してフラグメント識別子を書き換えてから、IDを復元しようとしました。
これは、スクロールを許可するがカーソルの移動を妨げるという不幸な効果がありました。IDスワップのイベントのシーケンスが間違っていると思います。これはスクロールを抑制するために機能するはずですが、カーソルが移動できるかどうかは疑わしいです。
スクリーンリーダーユーザーのカーソルリダイレクトもキャンセルせずに、目の見えるユーザーのスクロールをキャンセルできないのは本当に迷惑です。
これまでのところ、FirefoxとNVDAでのみテストしました。ブラウザとスクリーンリーダーの他の組み合わせでこれがどのように機能するかはわかりません。
提案?
javascript - contenteditable、テキストの最後に注意を設定(クロスブラウザ)
Chromeでの出力:
私はFFを信じていますそれはこのように見えるでしょう:
およびIEの場合:
残念ながら、すべてのブラウザがdivタグまたはpタグの代わりに挿入するようにするための優れた方法はありません<br />
。または、少なくともオンラインで何も見つかりませんでした。
とにかく、私が今やろうとしているのは、ボタンを押したときに、テキストの最後にカレットを設定したいので、次のようになります。
これを行う方法はありますか?すべてのブラウザで機能しますか?
例:
java - Jtextpaneをクリックして、意図したとおりに選択されていないポップアップメニュー効果を作成します
JFrameにJTextPaneがあり、JTextPane.setComponentPopupMenuメソッドを介してJTextPaneに割り当てられるポップアップメニューがあります。
JTextPaneに「単語のような」ポップアップ動作を与えたいと思います。つまり、現在のテキスト選択の外側を右クリックすると、カレットは右クリックした場所に再配置され、テキスト選択に影響するメニューオプション(切り取り、コピー、太字など)が無効になります。現在のテキスト選択内で右クリックすると、テキスト選択を有効にするオプションを含むポップアップが表示され、テキスト選択が保持され、カレットは移動しません。
問題は、選択の変更を処理するコードをどこに配置できるかがわからないように見えることです。私は試した:
- ポップアップが表示される前にトリガーされる「PopupMenuWillBecomeVisible」イベントを使用します。このメソッドに渡されるイベントにはマウスイベント情報が含まれていないため、viewtomodelを使用して選択を変更する方法を見つける方法はありません。私はMouseInfoを使用できましたが、それはせいぜい疑わしいようです。
- JTextPaneまたはJFrameでMousePressed/MouseReleasedイベントを使用する。どうやら、ポップアップメニューがトリガーされたときにこれらのイベントのどちらも呼び出されません。実際、ポップアップメニューの親コンポーネントが何であるかはまだわかりません。(Windowsでは「MouseReleased」がポップアップトリガーであり、他のシステムでは「MousePressed」がトリガーであることを読みました。両方を試しましたが、どちらも機能しませんでした)。
したがって、問題は、ポップアップメニューが表示される前に呼び出されるコードを配置する場所が見つからないように見えることですが、ポップアップメニューをトリガーしたmouseEventを認識していることだと思います。私はここで何かが欠けているに違いありません。
c# - API C# - キャレットが別のプログラムにあるテキストボックスのハンドルを取得する方法は?
別のプログラムで、キャレットが入っているテキストボックスのハンドルを取得したい。私が見つけることができるのは、「EnumChildWindows」を使用してウィンドウ内のコントロールのリストを取得し、「編集」コントロールを検索する方法だけです..(テキストボックスを持つすべてのプログラムでは機能しません)。キャレットが入っていて、ユーザーが書き込んでいるものを見つける方法がわかりません。本当に行き詰まってしまいました.. :( たくさんありがとう、Shiran。