将光标放在带有JavaScript的iframe主体元素中的文本末尾
Place cursor at the end of text in an iframe body element with JavaScript
我首先要道歉,因为这可能看起来像或实际上是重复的,但我已经尝试了我遇到的每一个解决方案,似乎都不适合我。
在我的HTML中,我有一个iframe引用了另一个HTML文档。使用JavaScript,在按下按钮列表时,我会将文本插入到iframe的主体中。我还使用JavaScript来保持对iframe主体的关注。问题是,每次按下这些按钮时,似乎都无法将光标移动到文本的末尾,它总是移动到开头。
我尝试过的解决方案之一是将此代码添加到处理按钮按下的功能中:
iFrameBody.focus();
var content = iFrameBody.innerHTML;
iFrameBody.innerHTML = content;
所以函数看起来是这样的:
function typeIn(buttonId) {
var iFrameBody = document.getElementById("iFrame").contentWindow.document.body;
iFrameBody.innerHTML += buttonId;
iFrameBody.focus();
var content = iFrameBody.innerHTML;
iFrameBody.innerHTML = content;
}
我尝试过的另一件事是,在我的iframe引用的HTML文件中:
<body onfocus="this.innerHTML = this.innerHTML;"></body>
我尝试了其他几个更复杂的解决方案,坦率地说,我甚至不太理解,但都无济于事。任何帮助都将不胜感激。
我想明白了。问题是,我使用了一个body元素,编写到它的innerHTML,并试图将重点放在body上。通过简单地在iFrame中使用文本区域,它变得非常简单,只需要最简单的代码。
这是为了在页面加载时设置焦点:
window.onload = function () {
var iFrameTextArea = document.getElementById("iFrame").contentWindow.document.getElementById("iFrameTextArea");
iFrameTextArea.focus();
}
然后将按钮设置为在保持焦点的同时写入文本区域:
function typeIn(buttonId) {
var iFrameTextArea = document.getElementById("iFrame").contentWindow.document.getElementById("iFrameInput");
iFrameTextArea.focus();
iFrameTextArea.value += buttonId;
}
超级简单!!
您也可以使用以下代码来解决这个问题,而不是在iframe中再次使用textarea。
var iframeElement = document.getElementById("iFrame").contentWindow.document.body;
iframeElement.focus();
var len = iframeElement.length ;
iframeElement.setSelectionRange(len, len);
相关文章:
- 提取没有特定子元素的主体元素
- 如何根据主体高度动态更改元素边距顶部
- 将覆盖添加到除元素之外的主体
- 如何将鼠标左键上附加的工具栏删除到主体或其他元素
- 通过单击主体隐藏元素,除非是特定元素
- PHP 未接收 Polymer core-ajax 元素中的 POST 主体集
- 获取静态元素在主体上的位置
- 修复了元素动画滚动主体在顶部
- 计数表 主体元素内的长度
- 对除元素以外的主体应用模糊
- $(document).ready() 中的函数找不到 DOM 的主体元素
- 将元素高度设置为等于主体高度减去 170px
- 根据主体id将类添加到元素中
- Javascript如何在头部访问主体中的元素
- 在元素添加到主体后运行javascript
- 替换(淡入)主体背景而不影响嵌套元素
- 如何检查元素是否为主体
- 如何使用类名克隆元素并将其附加到主体
- 在角度模块中,为什么主体是最后一个数组元素
- 将光标放在带有JavaScript的iframe主体元素中的文本末尾