javascript - getSelection 不会在自定义文本输入中为我找到选定的文本

标签 javascript firebase getselection firepad

我正在使用新的 Firepad realtime text collaboration service .

我想对用户选择的框中的文本使用 JavaScript getSelection 方法。

但是,无论出于何种原因,我的代码都无法正常工作。

我的 JavaScript:

function myFunction()
{
    alert(window.getSelection());
}

HTML:

<button onclick="myFunction();">Get Selected Text in Firepad</button>

My test site

最佳答案

查看插件后,FirePad 似乎正在使用 textarea

根据 another SO post的回答似乎 textareas 不使用与其他节点相同的选择范围。

accepted answer解释如下:

There is extra bizarreness going on with textarea nodes. If I remember correctly they behave as any other nodes when you select them in IE, but in other browsers they have an independent selection range which is exposed via the .selectionEnd and .selectionStart properties on the node.

highest voted answer显示解决方案。

该解决方案直接使用对 textarea 节点的引用,并使用元素的 selectionEndselectionStart 属性从那里获取选定范围,类似对此:

function myFunction() {
    var e = document.getElementById('thearea');

    //Mozilla and DOM 3.0
    if ('selectionStart' in e) {
        var l = e.selectionEnd - e.selectionStart;

        var start = e.selectionStart,
            end = e.selectionEnd,
            length = l,
            text = e.value.substr(e.selectionStart, l);

        alert(text);
    }
}

DEMO - 对 textarea

使用 selectionStartselectionEnd

我不确定这些天在所有浏览器中是否都相同,但上面的代码和链接 SO 中的附加信息应该有望帮助您获得所需的结果。

关于javascript - getSelection 不会在自定义文本输入中为我找到选定的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16239776/

相关文章:

javascript - 执行中间操作并在 bluebird 中延续之前的结果

javascript - 为什么非编译脚本语言不适合用于密集计算?

typescript - Firebase - 使用 Firestore 的 FieldValue

android - 如何在 firebase 存储上下载图像?

javascript - 从 javascript 调用网络服务

javascript - 如何使用 requirejs 导入 strophe?

android - 在firebase,flutter中应该如何处理好友请求和邀请?

javascript - 保存选择以供以后在 JS 中使用

javascript - 如何支持跨浏览器多选文本?

javascript - 使用 window.getSelection 从文本区域获取选定或光标定位的文本行