我有一个Windows CMD脚本,它接受许多参数并执行EXE,首先传递一些硬编码参数,然后传递用户的所有参数.CMD脚本如下所示:
launcher.exe paramX paramY %*
Run Code Online (Sandbox Code Playgroud)
用户将从Windows shell执行CMD脚本,如下所示:
launcher.cmd param1 param2 param3 [...]
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果参数到CMD脚本包含壳等特殊字符< >和^,用户被迫通过前述各用3插入符号逸出这些^壳转义字符.
1)要将参数传递ten>one给EXE,用户必须按如下方式启动CMD:
launcher.cmd ten^^^>one
Run Code Online (Sandbox Code Playgroud)
这样做的原因是,shell特殊字符^,并>通过命令外壳在两个层面解释,首先在命令行和第二的CMD脚本中.因此,使用脱字符^外壳转义字符转义的shell必须应用两次.问题是这对用户来说并不明显,看起来很难看.
对于这个例子,一个更好的解决方案是用双引号括起参数.但是,这会分解为更复杂的示例,其中包含参数中的文字双引号.
2)要将参数传递"^给EXE,用户必须按如下方式启动CMD:
launcher.cmd "\"^^^^"
Run Code Online (Sandbox Code Playgroud)
在我的情况下,我想支持包含任何低ASCII字符序列的参数,不包括控制字符,即代码点0x20到0x7E.我知道会有一些例子,用户必须使用插入符号来逃避某些shell特殊字符.但是,我不希望用户在这些情况下每次都必须使用3个插入符,因为它们恰好是在调用CMD脚本而不是EXE.
我可以通过使用执行相同操作的EXE替换CMD脚本来解决此问题.但是,有没有办法改变CMD脚本,以便它将参数传递给EXE而不解释shell特殊字符?
我即将在我的contenteditable div中实现Facebook ,如果我给'$'和一些像'a'这样的字符我需要一个自动建议,它应该弹出我的插入位置附近.
我需要知道如何在JavaScript for IE和其他浏览器中找到插入位置之前的最后一个字符.我可以访问Jquery库.
(function($) {
$.fn.getCursorPosition = function() {
var input = this.get(0);
if (!input) return; // No (input) element found
if ('selectionStart' in input) {
// Standard-compliant browsers
return input.selectionStart;
} else if (document.selection) {
// IE
input.focus();
var sel = document.selection.createRange();
var selLen = document.selection.createRange().text.length;
sel.moveStart('character', -input.value.length);
return sel.text.length - selLen;
}
}
})(jQuery);
eg.
var caretPosition = $("#contenteditablediv").getCursorPosition();
var lastchar = getchar(caretposition -1);???
Run Code Online (Sandbox Code Playgroud) 为了在一个contenteditable元素中获取和设置插入位置,我尝试了这个答案中的代码,但是当你移动到不同的文本节点时,开始和结束位置会重置.
<div contenteditable>012345<br><br><br>9012345</div>
Run Code Online (Sandbox Code Playgroud)
所以,我修改了这个答案的代码(通过@TimDown),但它还没有完全正确地计算换行符...在这个演示中,当我点击4并按下右箭头三次后,我会看到开始/结束报告5,6,然后8.或者,使用鼠标从4第一行中选择并继续向右选择(请参阅gif)
这是代码(演示 ;即使它看起来像,jQuery 没有被使用)
function getCaret(el) {
let start, end;
const range = document.getSelection().getRangeAt(0),
preSelectionRange = range.cloneRange(),
postSelectionRange = range.cloneRange();
preSelectionRange.selectNodeContents(el);
preSelectionRange.setEnd(range.startContainer, range.startOffset);
postSelectionRange.selectNodeContents(el);
postSelectionRange.setEnd(range.endContainer, range.endOffset);
start = preSelectionRange.toString().length;
end = start + range.toString().length;
// count <br>'s and adjust start & end
if (start > 0) {
var node,
i = el.children.length;
while (i--) {
node = …Run Code Online (Sandbox Code Playgroud) 在我的项目中,我试图将插入位置始终设置为文本的末尾.我知道这是默认行为,但是当我们动态添加一些文本时,插入符号位置会更改为Chrome和firefox中的起点(IE很好,太棒了).
无论如何要使它在chrome和firefox中正常工作?
这是小提琴
<div id="result" contenteditable="true"></div>
<button class="click">click to add text</butto>
Run Code Online (Sandbox Code Playgroud)
var result = $('#result');
$('.click').click(function () {
var preHtml = result.html();
result.html(preHtml + "hello");
result.focus();
});
Run Code Online (Sandbox Code Playgroud)
我尝试添加,setStart并setEnd在此链接中提到,但没有用.
我一直在搜索很多,但我找不到一种方法来获取内容可编辑div上插入符号的(X,Y)坐标,网上有很多关于此的内容,但问题没有一个页面我发现根据div的顶部得到坐标,所以我的问题更简单:
如何在一个contenteditable div上得到插入符号的(X,Y)坐标,但是Y坐标必须根据div的顶部而不是从页面可见部分的顶部计算?
注1:我特别需要Y坐标.
注2:我只能使用纯javascript,没有JQUERY.
我的方式:
我没有找到直接的方法来做到这一点,所以作为一种解决方法,我想根据页面的可见部分和Div的隐藏部分获得Y坐标并对结果求和(我正在研究这个但我没有运气!).
目前,我的 SwiftUI 的光标/插入符号TextField是blue。是否有用于光标颜色的 API 或解决方法?
我正在WinForms .Net 2.0应用程序中开发类似应用程序的自定义HyperTerminal.我在Panel中有一个多行TextBox,您可以在其中与硬件设备进行交互.
我的客户希望拥有一个自定义Caret,一个填充矩形,大小为一个字符空间,而不是默认的垂直线.
我知道.Net默认情况下不提供执行此操作的选项,但必须有一些Windows功能才能执行此操作.
我想知道游标在JTextArea中的列号和行号.即.在记事本中,当我在第一行而不是状态栏时显示Ln 1,Col 1.
提前致谢...
我正在尝试在我正在编写的当前程序中实现一个功能,我想学习如何向下滚动到JTextArea中的特定文本.例如,假设我有以下内容:
JTextArea area = new JTextArea(someReallyLongString);
Run Code Online (Sandbox Code Playgroud)
someReallyLongString表示一个段落,或一段非常大的文本(其中垂直滚动条可见).所以我要做的是向下滚动到该文本区域内的特定文本.例如,假设someReallyLongString在滚动条的中间附近包含单词"the"(意味着这个单词不可见),我将如何向下滚动到该特定文本?
谢谢,任何帮助都会非常感激.