javascript - window.getSelection 在textarea中获取正确的选择

标签 javascript firefox google-chrome

在firefox和chrome中window.getSelection用于获取document中的当前选择,但是如果当前选择在textarea中,window.getSelection返回的不是选择,而是textarea本身。 那么,如何在firefox和chrome中正确选择呢?

最佳答案

您是否需要在文本区域中获取选定的文本?您可能会要求 selectionStart 和 selectionEnd(在 Internet Explorer 中不存在,适用于 Firefox 和 Chrome)

 Select some text below and then click the button:<br/>
<textarea id="myTextarea" rows="5" cols="30">
Lorem ipsum dolor sit amet, 
consectetur adipiscing elit.
</textarea>
<button onclick="alert(getTextSelection())">alert text selection</button>

<script type="text/javascript">
    function getTextSelection(){
        var field = document.getElementById("myTextarea");
        var startPos = field.selectionStart;
        var endPos = field.selectionEnd;        
        var field_value = field.value;
        var selectedText = field_value.substring(startPos,endPos);
        return selectedText;
    }   
</script>

如果有多个文本区域并且您希望在选择时获得输出:

Select some text in either textarea:<br/> 
<textarea rows="5" cols="30" onselect="alert(getTextSelection(this))"> 
Lorem ipsum dolor sit amet,  
consectetur adipiscing elit. 
</textarea> 


<textarea rows="5" cols="30" onselect="alert(getTextSelection(this))"> 
fate it seems
not without a sense of irony 
</textarea> 


<script type="text/javascript"> 
    function getTextSelection(field){        
        var startPos = field.selectionStart; 
        var endPos = field.selectionEnd;          
        var selectedText = field.value.substring(startPos,endPos); 
        return selectedText;
    }    
</script>

或者你仍然可以使用一个按钮来完成它,但是使用一个全局变量:

Select some text in either textarea and click the button:<br/> 
<textarea rows="5" cols="30" onselect="window.selectedTextarea=this"> 
Lorem ipsum dolor sit amet,  
consectetur adipiscing elit. 
</textarea> 


<textarea rows="5" cols="30" onselect="window.selectedTextarea=this"> 
fate it seems
not without a sense of irony 
</textarea> 



<button onclick="alert(getTextSelection())">alert text selection</button>



<script type="text/javascript"> 
// warning: global variable: dirty!!!
var selectedTextarea

    function getTextSelection(){        
        var field = window.selectedTextarea;
        var startPos = field.selectionStart; 
        var endPos = field.selectionEnd;          
        var selectedText = field.value.substring(startPos,endPos); 
        return selectedText;
    }    
</script> 

关于javascript - window.getSelection 在textarea中获取正确的选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10596606/

相关文章:

javascript - 用于 outlook Web 应用程序的任务 Pane 插件

html - Mozilla Firefox 中缺少 CC 按钮

html - 水平滚动不适用于 chrome iPad

css - Font-Awesome 图标在 Android 版 Chrome 上无法正确显示

javascript - 如何根据鼠标悬停在图像上的位置突出显示 gridview 行?

javascript - 如何检测已到达可滚动元素的末尾?

javascript - href=javascript : jquery not working in FF

html - iframe 中的历史 pushState,影响 Chrome 中的父窗口布局?

javascript - window.getSelection() 在 ios6 设备中不工作?

jquery - Firefox Web 开发者工具栏导致奇怪的行为