如何使用“开始”在 Iframe 中选择范围和“结束”在 Firefox 中,如“selectionStart”来自输入元素

发布于 2024-08-24 03:46:25 字数 759 浏览 11 评论 0原文

对于 Internet Explorer,我有当前的代码来选择 iframe 中的范围,并将 desingMode 设置为 on:

    var Range = window.document.selection.createRange();
    var obj = { start: 3, end : 6}
    Range.collapse( true );
    Range.moveStart( 'character', obj.start );
    Range.moveEnd( 'character', obj.end - obj.start );
    Range.select();

如果我只想通过 2 个参数选择字符串的一个部分,那么这非常有用。开始和结束(对于输入元素,存在属性 SelectionStart 和 SelectionEnd )。

例如,当在字符串“Hello World”上执行此代码时,它仅突出显示字符串 llo Wo 或类似的内容。
问题是 Firefox Dom 不支持 moveStart 或 moveEnd 方法,但仅支持 range.setStart 和 range.setEnd 仅请求一个节点和一个偏移量作为参数。

那么可以在 Firefox 中虚拟化 moveStart 和 moveEnd 方法吗? 谢谢。

for Internet Explorer, I have the current code to select a range in an iframe with desingMode setting to on:

    var Range = window.document.selection.createRange();
    var obj = { start: 3, end : 6}
    Range.collapse( true );
    Range.moveStart( 'character', obj.start );
    Range.moveEnd( 'character', obj.end - obj.start );
    Range.select();

Most useful if I want select only one piece of a string by only 2 parameters. Start and End ( for input elements exists the properties selectionStart and selectionEnd ).

When this code is executed, for example, on a string "Hello World", it highlight only the piece of string llo Wo, or something like that.
The problem is that Firefox Dom do not support the method moveStart or moveEnd, but only range.setStart and range.setEnd which request only a node and an offset as arguments.

So is possible to virtualizing the moveStart and the moveEnd methods in Firefox?
Thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

万劫不复 2024-08-31 03:46:25

这对我有用:

var iframeElement = ...; // the DOM element for the iframe;

var contentDoc = iframeElement.contentDocument;
var range = contentDoc.createRange();
range.setStart(contentDoc.body.firstChild, 3);
range.setEnd(contentDoc.body.firstChild, 6);
var selection = iframeElement.contentWindow.getSelection();
selection.removeAllRanges();
selection.addRange(range);

你需要在 Firefox 中调用removeAllRanges(),否则你可能会得到多个选择。

This works for me:

var iframeElement = ...; // the DOM element for the iframe;

var contentDoc = iframeElement.contentDocument;
var range = contentDoc.createRange();
range.setStart(contentDoc.body.firstChild, 3);
range.setEnd(contentDoc.body.firstChild, 6);
var selection = iframeElement.contentWindow.getSelection();
selection.removeAllRanges();
selection.addRange(range);

You need to call removeAllRanges() in Firefox or else you can end up with multiple selections.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文