问题标签 [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.

0 投票
2 回答
19842 浏览

batch-file - 如何避免 cmd.exe 解释 shell 特殊字符,如 < > ^

我有一个 Windows CMD 脚本,它接受许多参数并执行一个 EXE,首先传递一些硬编码的参数,然后传递来自用户的所有参数。CMD 脚本如下所示:

用户将从 Windows shell 执行 CMD 脚本,如下所示:

我遇到的问题是,如果 CMD 脚本的参数包含 shell 特殊字符,例如< >and ^,则用户被迫通过在每个前面加上 3 个插入符号^shell 转义字符来转义这些字符。

两个例子

1) 要将参数传递ten>one给 EXE,用户必须按如下方式启动 CMD:

这样做的原因是 shell 特殊字符^>命令 shell 在两个级别上解释,第一个在命令行上,第二个在 CMD 脚本内。因此,^必须应用两次使用插入符号 shell 转义字符进行转义的 shell。问题是这对用户来说是不明显的并且看起来很丑陋。

对于此示例,更好的解决方案是用双引号将参数括起来。但是,对于在参数中包含文字双引号的更复杂的示例,这会失效。

2) 要将参数传递"^给 EXE,用户必须按如下方式启动 CMD:

在我的情况下,我想支持包含任何低 ASCII 字符序列的参数,不包括控制字符,即代码点 0x20 到 0x7E。我知道会有一些例子,用户必须用插入符号转义某些 shell 特殊字符。但是,我希望用户在这些情况下每次都必须使用3 个插入符号,因为他们碰巧调用的是 CMD 脚本而不是 EXE。

我可以通过将 CMD 脚本替换为执行相同操作的 EXE 来解决此问题。但是,有没有办法改变 CMD 脚本,使其参数通过 EXE 而不解释 shell 特殊字符?

0 投票
1 回答
1363 浏览

javascript - 在 IE 中使用 jCaret 插件获取插入符号位置

我在 IE 中遇到 jCaret 插件的问题。

jCaret 下载

我想在 textarea 中获取插入符号的位置。

我的代码如下所示:

IE 中的问题是,如果 textarea 只有一行,我只会得到正确的结果,但如果有超过一行,则结果是错误的。似乎换行符在 IE 中需要一个额外的字符。那么如何删除 IE 中的换行符呢?

0 投票
1 回答
663 浏览

wpf - 检索插入符号在 TextBox 中的结束位置,以将插入符号放入下一个 TextBox

如何在 WPF 文本框中找到插入符号的结束位置,这样我就不能再用插入符号向右移动了?

0 投票
4 回答
6796 浏览

wpf - WPF RichTextBox - 在当前插入符号位置获取整个单词

我在我的 WPF Richtextbox 上启用了拼写,我想在显示带有拼写建议的上下文菜单之前在当前插入符号位置获取拼写错误的单词。

0 投票
15 回答
151848 浏览

javascript - 获取内容可编辑的插入符号位置

我找到了大量关于如何在元素中设置插入符号位置的跨浏览器的好答案contentEditable,但没有找到关于如何首先获得插入符号位置的答案。

我想要做的是知道 div 上的插入符号位置keyup。因此,当用户输入文本时,我可以随时知道contentEditable元素中插入符号的位置。

0 投票
0 回答
557 浏览

windows - 在所有应用程序中获取键盘光标位置/坐标

现在我正在使用这些函数GetCaretPos()GetGUIThreadInfo()获取当前的键盘光标/插入符号坐标。它们在记事本和写字板等应用程序中正常工作并返回正确的坐标,但在 Firefox、Thunderbird 等应用程序中,无论键盘光标在哪里,返回的坐标始终为 0、0。

我知道在这些应用程序中获取键盘光标/插入符号坐标并非不可能,因为当我在其中使用Yahoo KeyKey IME 时,它会在键盘光标所在的位置弹出一个对话框。

问题是,由于 KeyKey 不是开源的,我不知道它是如何做到的。

如果有人能指出我正确的方向或知道正确的功能来使用它,将不胜感激!

0 投票
1 回答
2352 浏览

javascript - preventDefault(),滚动和可访问性

我正在向站点添加一个基于 JavaScript 的子窗口。基本上,部分 UI 位于屏幕左边缘,直到用户触发链接;然后它被移动到一个可见的位置。我有一系列五个测试用例,但还没有声誉点来单独链接它们。

出于可访问性目的,我想使用包含文档片段的链接,因此:

使用相应的 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 进行了测试。我不知道这将如何在浏览器和屏幕阅读器的其他组合中发挥作用。

建议?

0 投票
4 回答
64749 浏览

javascript - contenteditable,在文本末尾设置插入符号(跨浏览器)

Chrome中输出:

我相信FF它看起来像这样:

IE中:

不幸的是,没有很好的方法可以让每个浏览器都插入 a<br />而不是 div 或 p-tag,或者至少我在网上找不到任何东西。


无论如何,我现在要做的是,当我点击按钮时,我希望将插入符号设置在文本的末尾,所以它应该看起来像这样:

有什么办法可以让它在所有浏览器中工作?

例子:

0 投票
1 回答
2440 浏览

java - Jtextpane 单击以在选择时创建弹出菜单效果与预期不符

我有一个 JTextPane 坐在 JFrame 中,弹出菜单通过 JTextPane.setComponentPopupMenu 方法分配给 JTextPane。

我想给 JTextPane 一个“类似单词”的弹出行为。我的意思是,如果您在当前文本选择之外单击鼠标右键,插入符号将重新定位到您右键单击的位置,同时禁用影响文本选择的菜单选项(例如剪切、复制或粗体)。如果您在当前文本选择中右键单击,将出现弹出窗口,其中包含启用文本选择的选项,文本选择将持续存在,并且插入符号不会移动。

问题是我似乎找不到可以将处理选择更改的代码放在哪里。我试过了:

  • 使用在弹出窗口可见之前触发的“PopupMenuWillBecomeVisible”事件。传递给此方法的事件不包含任何鼠标事件信息,因此我无法使用 viewtomodel 找出如何修改选择。我可以使用 MouseInfo 但这似乎充其量是可疑的。
  • 在 JTextPane 或 JFrame 中使用 MousePressed/MouseReleased 事件。显然,当弹出菜单被触发时,这些事件都不会被调用。事实上,我仍然无法确定我的弹出菜单的父组件是什么。(我确实在 Windows 中读到“MouseReleased”是弹出触发器,而在其他系统中“MousePressed”是触发器。我都试过了,但都没有成功)。

所以,我想问题是我似乎无法找到一个地方来放置代码,在弹出菜单变得可见之前将调用它,但是知道触发弹出菜单的 mouseEvent 。我一定在这里遗漏了一些东西。

0 投票
1 回答
1138 浏览

c# - API C# - 如何获取插入符号在另一个程序中的文本框的句柄?

我想在另一个程序中获取插入符号所在的文本框的句柄。我所能找到的只是如何在带有“EnumChildWindows”的窗口中获取控件列表,然后搜索“编辑”控件..(它不适用于所有具有文本框的程序)。我不知道如何找到插入符号所在且用户正在写入的那个。我真的被它困住了.. :(thanx alot,Shiran。