标签: caret

您如何以编程方式将Flex TextArea的插入符号移动到最后?

我试图在从我的代码中添加一些文本后将Flex TextArea中的插入符移动到最后.我查看了TextArea及其底层TextField的参考文档,但似乎没有提供任何方法来处理它.

我尝试过的一种方法是将焦点设置到文本区域并调度KeyUp KeyboardEvent,并将事件的键代码设置为"End"键,但这不起作用.

关于如何做到这一点的任何想法?

谢谢.

apache-flex textarea flex3 caret textfield

6
推荐指数
1
解决办法
9060
查看次数

TEdit焦点和插入符号

我有两个TEdit控件.当我退出edit1时,edit2会收到焦点.在Edit1的OnExit事件中,我有以下代码:

procedure TForm1.Edit1Exit(Sender: TObject);
begin
  edit2.Enabled := false;
  edit2.Enabled := true;
  edit2.setfocus;
end;
Run Code Online (Sandbox Code Playgroud)

Edit2有焦点.但是,它没有任何关注.我可以开始输入,但它很混乱,因为我不知道哪个控件有焦点.

我更感兴趣的是Enabled属性的翻转会导致某些消息无法正常触发?例如,edit2的OnEnter事件未被触发.

如果重要的话,这是在D2006.

谢谢回复.

delphi caret setfocus

6
推荐指数
2
解决办法
9286
查看次数

在UIWebView中获取插入符号(光标)垂直位置

为了管理内容可编辑UIWebView中的自动滚动,我需要获得正确的插入符Y垂直坐标.

我使用javascript确定了两种方法.

第一个使用getClientRects javascript函数:

    CGRect caretRect = [self.webView stringByEvaluatingJavaScriptFromString: @"
        var sel = document.getSelection();
        var range = sel.getRangeAt(0).cloneRange();
        range.collapse(true);
        var r =range.getClientRects()[0];
        return '{{'+r.left+','+r.top+'},{'+r.width+','+r.height+'}}';"];
    int caretY = caretRect.origin.y;
Run Code Online (Sandbox Code Playgroud)

这样,插入符号一直闪烁,一个问题得到正确的垂直位置,有一个问题:当用户键入返回键时,下一行为空,在键入字符键之前,caretY等于零.这样的方法就无法使用了.

第二个插入一个tmp span,然后将其删除:

int caretY = [[self.webView stringByEvaluatingJavaScriptFromString: @"      
    var sel = window.getSelection(); 
    sel.collapseToStart();
    var range = sel.getRangeAt(0);
    var span = document.createElement(\"span\");
    range.insertNode(span); 
    var topPosition = span.offsetTop; 
    span.parentNode.removeChild(span); 
    topPosition;"] intValue];
Run Code Online (Sandbox Code Playgroud)

这在任何情况下都给出了正确的照顾.但插入符号停止闪烁,这在屏幕上看起来非常无益.

有没有人知道可以做出以下的任何方法(或这些方法的改编):

    - get the correct caret Y in any situation
    - keep the caret blinking in any situation
Run Code Online (Sandbox Code Playgroud)

谢谢

caret uiwebview coordinates ios

6
推荐指数
1
解决办法
1128
查看次数

在Text Formatter API中使用插入符号

我正在通过Text Formatter API创建简单的WPF文本编辑器.我已经完成了一些基本功能,现在我需要添加一个插入支持.我还有一个视觉插入符号(只是一个闪烁动画的行),它应该与渲染文本同步.我在TextLine类中发现了一堆方法,例如GetNextCaretCharacterHit,GetPreviousCaretCharacterHit,GetBackspaceCaretCharacterHit.但是关于它们的文档信息是......非常稀缺.那些在该领域有一些经验的人可以解释如何处理这些方法,因为我几乎不知道这个吗?我试图在互联网上搜索信息,但结果我一无所获.

我将不胜感激任何帮助!

.net c# wpf text-editor caret

6
推荐指数
0
解决办法
67
查看次数

如何获得包含图像的contenteditable div的插入位置

我有这个contentedittable div

<div contenteditable="true" id="text">minubyv<img src="images/smiley/Emoji Smiley-01.png" class="emojiText" />iubyvt</div>
Run Code Online (Sandbox Code Playgroud)

这是代码输出的图像描述 在此输入图像描述

所以我想获得div的插入位置,并假设光标位于最后一个字符之后.这是我获得插入位置的代码

function getCaretPosition(editableDiv) {
  var caretPos = 0,
    sel, range;
  if (window.getSelection) {
    sel = window.getSelection();
    if (sel.rangeCount) {
      range = sel.getRangeAt(0);
      if (range.commonAncestorContainer.parentNode == editableDiv) {
        caretPos = range.endOffset;
      }
    }
  } else if (document.selection && document.selection.createRange) {
    range = document.selection.createRange();
    if (range.parentElement() == editableDiv) {
      var tempEl = document.createElement("span");
      editableDiv.insertBefore(tempEl, editableDiv.firstChild);
      var tempRange = range.duplicate();
      tempRange.moveToElementText(tempEl);
      tempRange.setEndPoint("EndToEnd", range);
      caretPos = tempRange.text.length;
    }
  }
  return caretPos;
}

var update …
Run Code Online (Sandbox Code Playgroud)

javascript caret contenteditable getcaretpos

6
推荐指数
1
解决办法
3046
查看次数

TinyMCE 插入跨度后移动插入符

我正在创建一个带有自定义按钮的 TinyMCE 插件,该按钮插入<span>test</span>当前插入符位置。此外,当插入符号位于先前插入的文本中时,再次单击此按钮将删除当前文本<span>test</span>并将其替换为新插入的文本<span>test</span>

tinymce.PluginManager.add('test_plugin', function(editor) {
   editor.addButton('test-button', {
      text: 'Insert span',
      onclick: function() {
         var current_node = editor.selection.getNode();

         if(current_node.tagName === 'SPAN') {
            current_node.remove();
         }

         editor.insertContent('<span>test</span>');
      }
   });
});
Run Code Online (Sandbox Code Playgroud)

它工作得很好,但是插入插入符后<span>test</span>卡在这个跨度节点中,我无法将其移出这个跨度。

&#32;在末尾添加(空格)( <span>test</span>&#32;)解决了插入符号卡住的问题,但每次重新插入都会添加多余的空格。

如何解决插入符号卡住问题?

或者

&#32;重新插入时如何删除多余的?

javascript jquery tinymce caret

6
推荐指数
1
解决办法
2041
查看次数

C“块”插入字符

我注意到这个涉及插入符号 (^) 字符的声明被固定在顶部的 cdecl.org 站点上:

// "cast foo into block(int, long long) returning double"
(double (^)(int , long long ))foo
Run Code Online (Sandbox Code Playgroud)

有人可以解释这里插入符号的目的是什么吗?这真的是 C 声明中的有效字符,还是某物的占位符?

c declaration caret

6
推荐指数
1
解决办法
152
查看次数

重置内容可编辑插入符号位置

我目前正在尝试为Javascript创建一个语法高亮器,我目前面临的问题是我发现创建这样的东西很常见,即在用户键入或编辑 contentEditable 文本时将插入符号位置设置到末尾。

我在 SO 上研究并发现了这个和许多其他解决方案,但没有一个有效。它获取插入符号的位置,但从不重置它,因此我试图找到解决此问题的方法。

下面是我想出的代码。

html

<div id="editor" contentEditable="true" onkeyup="resetPosition(this)"></div>

<input type="text" onkeyup="resetPosition(this)" />
Run Code Online (Sandbox Code Playgroud)

js

function getPos(e) {
    // for contentedit field
  if (e.isContentEditable) {
    e.focus()
    let _range = document.getSelection().getRangeAt(0)
    let range = _range.cloneRange()
    range.selectNodeContents(e)
    range.setEnd(_range.endContainer, _range.endOffset)

    return range.toString().length;
  }
  // for texterea/input element
  return e.target.selectionStart
}


function setPos(pos, e) {
  // for contentedit field
  if (e.isContentEditable) {
      e.focus()
      document.getSelection().collapse(e, pos);
      return
  }
  e.setSelectionRange(pos, pos)
}

function resetPosition(e) {
  if(e.isContentEditable) {
  let currentPosition = …
Run Code Online (Sandbox Code Playgroud)

html javascript caret

6
推荐指数
1
解决办法
822
查看次数

如何从 React Bootstrap 中的下拉导航项中删除插入符号

我一直在尝试使用 bootstrap 4 从 NavDropdown 组件中删除插入符号并做出反应,但是我没有运气。这是我的反应和CSS,不知道出了什么问题。谢谢。

<Navbar expand="lg">
        <Navbar.Toggle aria-controls="basic-navbar-nav" />
        <Navbar.Collapse id="basic-navbar-nav">
          <Nav className="mr-auto">
          <NavDropdown title="ENGAGEMENT" id="basic-nav-dropdown" show={false} className="noCaret">
              <NavDropdown.Item href="#action/3.1">Action</NavDropdown.Item>
              <NavDropdown.Item href="#action/3.2">Another action</NavDropdown.Item>
              <NavDropdown.Item href="#action/3.3">Something</NavDropdown.Item>
              <NavDropdown.Divider />
              <NavDropdown.Item href="#action/3.4">Separated link</NavDropdown.Item>
            </NavDropdown>
          </Nav>
        </Navbar.Collapse> 
</Navbar>
Run Code Online (Sandbox Code Playgroud)
.caret {
  display: none !important;
}

.navbar .dropdown-menu:after{
  display:none !important;
 }

 .dropdown-toggle.noCaret:after {
  display: none !important;
Run Code Online (Sandbox Code Playgroud)

caret navbar reactjs react-bootstrap bootstrap-4

6
推荐指数
2
解决办法
6665
查看次数

如何将插入符号定位在内部还没有文本的 span 元素中?

这篇SO post 之后,我可以将插入符号放在一个span元素中,该元素位于div contenteditable="true".

我可以span通过它的来定位我想要的任何对象id,同时还可以决定插入符号应该放在哪个字符之后。

但是如何将插入符号放置在没有文本的跨度内?

只需按原样使用该函数,就会出现此错误: TypeError: Range.setStart: Argument 1 is not an object.

此外,出于某种原因,当span有内容时,它在 Firefox 中运行良好。但不是在 Chrome 中,插入符号放在span. 有什么办法也可以解决这个问题?

我对 jQuery 持开放态度,如果它能让事情变得更容易的话。

这是我的代码:

JSFiddle

function setCaret(x, y) {
   var element = document.getElementById(x);
   var range = document.createRange();  
   var node;   
   node = document.getElementById(y);  
   range.setStart(node.childNodes[0], 0);
   var sel = window.getSelection();
   range.collapse(true);
   sel.removeAllRanges();
   sel.addRange(range);
   element.focus();    
}
Run Code Online (Sandbox Code Playgroud)
body {
  font-family: sans-serif;
}

input {
  margin-bottom: 5px;
  padding: 3px;
} …
Run Code Online (Sandbox Code Playgroud)

html javascript jquery caret contenteditable

6
推荐指数
1
解决办法
243
查看次数