关于document.selection对象的介绍

本文介绍了如何使用IE浏览器特有的document.selection对象进行文档选中区的操作,包括加粗选中文本、显示选中内容、清除选中内容及通过脚本选择指定内容。

document.selection只有IE支持,
  window.getSelection()也只有FireFox和Safari支持,都不是标准语法。

  selection 对象代表了当前激活选中区,即高亮文本块,或文档中用户可执行某些操作的其它元素。selection   对象的典型用途是作为用户的输入,以便识别正在对文档的哪一部分正在处理,或者作为某一操作的结果输出给用户。

  用户和脚本都可以创建选中区。用户创建选中区的办法是拖曳文档的一部分。脚本创建选中区的办法是在文本区域或类似对象上调用 select 方法。要获取当前选中区,请对document对象应用selection关键字。要对选中区执行操作,请先用createRange方法从选中区创建一个文本区域对象。document.selection.createRange() 根据当前文字选择返回 TextRange 对象,或根据控件选择返回 ControlRange 对象。配合 execCommand,在 HTML 编辑器中很有用,比如:文字加粗、斜体、复制、粘贴、创建超链接等。selection.type选中内容的类型。 //document.selection.createRange().parentElement().name。 

  一个文档同一时间只能有一个选中区。选中区的类型决定了其中为空或者包含文本或元素块。尽管空的选中区不包含任何内容,你仍然可以用它作为文档中的位置标志。

1、一个简单的例子(对选中的文本执行加粗命令 , 该脚本只在IE下有效)

XML/HTML代码

<html> 
  <head> 
    <title>a test for selection object</title> 
  </head> 
  <body> 
    <script language='javascript'> 
      function test()  
      {  
        var textSelection = document.selection.createRange();  
            textSelection.execCommand('Bold');  
      }  
    </script> 
    <div onmouseup = "javascript:test();">select me.... , I will be bold..</div> 
  </body> 
</html>   

 

2、查看选择的内容

XML/HTML代码

<html> 
  <head> 
    <title>a test for selection object</title> 
  </head> 
  <body> 
    <script language='javascript'> 
      function showSelectContent(isIncludingHtmlTag)  
      {  
        var textSelection = document.selection.createRange();  
        if (isIncludingHtmlTag)  alert(textSelection.htmlText);  
        else alert(textSelection.text);  
        return false;  
      }  
    </script> 
    <a href='#' onmouseup='javascript:showSelectContent(0);'> 
      select me. show selecting text  
      
    <br /> 
    <a href='#' onmouseup='javascript:showSelectContent(1);'> 
      select me. show selecting htmlText  
      
  </body> 
</html>   

3、清除选中的内容
 
XML/HTML代码
<html> 
   <head> 
     <title>a test for selection object</title> 
   </head> 
   <body> 
     <script language='javascript'> 
       function clearSelectionContent()  
      {  
         document.selection.clear();  
       }  
     </script> 
     <form> 
       <textarea cols=20 rows=5> 
          please select the whole me or parts of me , if you want to delete me.  
       </textarea> 
       <button type='button' onclick='javascript:clearSelectionContent();'> 
         delete selected contents  
       </buton> 
     </form> 
   </body> 
 </html>   

4、通过脚本选择内容

XML/HTML代码

<html> 
   <head> 
     <title>a test for selection object</title> 
   </head> 
   <body> 
     <script language='javascript'> 
       function selectionContentByScript()  
       {  
         var t=document.getElementById("test");    
         var o=t.createTextRange();      
             //o.moveStart("character",2);       
             o.select();     
       }  
     </script> 
     <form> 
       <input id='test' type='text' value='will be selected' /> 
       <br /> 
       <input type='button' onclick='javascript:selectionContentByScript();' value='select the text box value' /> 
     </form> 
   </body> 
 </html>   
`document.createRange()` 方法用于创建一个新的 `Range` 对象。`Range` 对象表示文档中的一个连续的范围,它可以包含节点和部分文本节点。 ### 使用方法 #### 1. 创建 `Range` 对象 ```javascript var range = document.createRange(); ``` #### 2. 设置范围的起始和结束位置 有多种方法可以设置 `Range` 对象的起始和结束位置: - `setStart(node, offset)` 和 `setEnd(node, offset)`:`node` 是起始或结束的节点,`offset` 是在该节点内的偏移量。 ```javascript var parent = document.getElementById('parent'); var child = parent.firstChild; range.setStart(child, 2); range.setEnd(child, 5); ``` - `selectNode(node)`:选择整个节点作为范围。 ```javascript var element = document.getElementById('myElement'); range.selectNode(element); ``` - `selectNodeContents(node)`:选择节点的内容作为范围。 ```javascript var element = document.getElementById('myElement'); range.selectNodeContents(element); ``` #### 3. 应用范围 可以使用 `window.getSelection()` 获取当前的选择对象,然后将 `Range` 对象应用到选择中。 ```javascript var selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); ``` ### 应用场景 #### 1. 文本选择 可以使用 `document.createRange()` 来选择页面上的特定文本,例如当用户点击某个按钮时,自动选择一段文本。 ```javascript var button = document.getElementById('selectTextButton'); button.addEventListener('click', function() { var element = document.getElementById('textToSelect'); var range = document.createRange(); range.selectNodeContents(element); var selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); }); ``` #### 2. 复制内容 在复制内容时,可以使用 `Range` 对象来选择要复制的内容。参考之前的引用代码,在复制内容时就用到了 `document.createRange()` 方法: ```javascript var value = "要复制的内容"; var element = document.createElement('SPAN'); element.textContent = value; document.body.appendChild(element); var range = document.createRange(); range.selectNode(element); var selection = window.getSelection(); selection.removeAllRanges(); selection.addRange(range); document.execCommand('copy'); element.remove ? element.remove() : element.removeNode(true); ``` #### 3. 插入内容 可以使用 `Range` 对象来在文档的特定位置插入内容。 ```javascript var parent = document.getElementById('parent'); var child = parent.firstChild; var range = document.createRange(); range.setStart(child, 2); var newNode = document.createTextNode('插入的新内容'); range.insertNode(newNode); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值