JavaScript / jQuery:如何在 Firefox 中获取选定的文本

Posted

技术标签:

【中文标题】JavaScript / jQuery:如何在 Firefox 中获取选定的文本【英文标题】:JavaScript / jQuery: how to get selected text in Firefox 【发布时间】:2014-01-01 00:25:37 【问题描述】:

如何在 Firefox 中获取选定的文本(在 contenteditable div 中)?最新版本就足够了,不需要覆盖旧版本。

假设我有一个 contenteditable div,如下所示,有人在那里选择了一个文本,然后点击了一个按钮,我如何将选定的文本复制到剪贴板或变量?

示例:

<div class='editInput' id='editInput'>Some awesome text</div>

我当前的功能(在 IE 中工作):

function GetSelection() 

    if (typeof window.getSelection != "undefined") 
    
        var sel = window.getSelection();
        if (sel.rangeCount) 
        
            var container = document.createElement('div');
            for (var i = 0, len = sel.rangeCount; i < len; ++i) 
                container.appendChild(sel.getRangeAt(i).cloneContents());
            return container.innerhtml;
        
    
    else if (typeof document.selection != 'undefined') 
        if (document.selection.type == 'Text') 
            return document.selection.createRange().htmlText;

    return '';

【问题讨论】:

【参考方案1】:

其他建议对我不起作用,但以下建议对我有用:

var textArea = document.getElementById('input_text_area');
var selectedText = textArea.value.substring(textArea.selectionStart,textArea.selectionEnd);

这个other answer 链接到一些背景知识,说明为什么上述内容是必要的,以及为什么 window.getSelection() 在 Firefox 上不起作用。

【讨论】:

【参考方案2】:
var selectedText = "" + window.getSelection();

【讨论】:

嗨蒂姆,感谢您的快速回复。您能告诉我如何更新上述功能以使其也涵盖此功能吗?我想让它在不同的浏览器中工作,这已经适用于 IE。我会更新帖子。 window.getSelection() 是标准化的并且可以跨浏览器工作,不要使用 document.getSelection() 因为这会在 FF 8 之前错误地返回一个字符串 @WaiKitKung:的确如此,但我认为没有人提到过document.getSelection()

以上是关于JavaScript / jQuery:如何在 Firefox 中获取选定的文本的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 jQuery 执行服务器端 Python 脚本?

如何禁用 javascript 以进行响应式设计

序列化对象以在 JavaScript/jQuery 中查询字符串 [重复]

javascript jquery: window.open如何全屏(类似F11)

+JavaScript&jQuery.递归

Sıfırdan ileri seviyee';网络Geliştirme';:Html、Css、Sass、Flexbox、Javascript、Bootstrap、JQuery、Asp.N