询问大多数开发人员如何将用户选择的内容复制到剪贴板,他们会提到Flash的需求(因此 Zeroclipboard等脚本的流行 )。然而,这种想法的调整现在归功于最近浏览器对JavaScript中关键技术的支持的改进,这使得复制到剪贴板本身成为可能。这种JavaScript方法在IE9 +,Firefox 41+和Chrome 42+中得到支持,最终为浏览器本身带来了原生剪切/复制支持。在本教程中,我们将看到如何阅读用户选择的文本内容,动态选择页面上的一些文本,最后但并非最不重要的是,将所选内容复制到剪贴板,所有这些都只使用JavaScript。我们现在正进入无Flash区域! document.execCommand()

网站建设公司,为您提供网站建设,网站制作,网页设计及定制网站建设服务,专注于
企业网站制作,高端网页制作,对
成都餐厅设计等多个行业拥有丰富的网站建设经验的网站建设公司。专业网站设计,网站优化推广哪家好,专业
网站推广优化,H5建站,响应式网站。
检索用户选择的文本内容
让我们从顶部开始,检索用户在页面上选择的内容,直到任何文本内容。为此,我们使用了所有现代浏览器和IE9 +支持的方法 : window.getSelection()
1 2 3 4 五 6 7 | "vertical-align: inherit;">"vertical-align: inherit;">function getSelectionText(){"vertical-align: inherit;">"vertical-align: inherit;">
var selectedText =“”"vertical-align: inherit;">"vertical-align: inherit;">
if(window.getSelection){//所有现代浏览器和IE9 +
selectedText = window.getSelection()。toString()"vertical-align: inherit;">"vertical-align: inherit;">
}"vertical-align: inherit;">"vertical-align: inherit;">
返回selectedText"vertical-align: inherit;">"vertical-align: inherit;">
}
|
window.getSelection()返回页面上当前选定的文本,并返回包含该数据的对象。要检索实际文本,我们使用它将其转换为字符串。以下示例在用户将鼠标悬停在文档上时调用我们的函数,以便查看用户选择的内容(如果有): SelectiontoString()getSelectionText()
1 2 3 4 五 6 | "vertical-align: inherit;">"vertical-align: inherit;">document.addEventListener('mouseup',function(){"vertical-align: inherit;">"vertical-align: inherit;">
var thetext = getSelectionText()"vertical-align: inherit;">"vertical-align: inherit;">
if(thetext.length> 0){//检查是否选择了一些文本
console.log(thetext)//记录用户在页面上选择的任何文本内容
}"vertical-align: inherit;">"vertical-align: inherit;">
},false)
|
我们首先检查是否选择了一些文本,就像用户只是单击页面一样,没有。
选择并读取页面上非表单元素的文本内容
继续前进,我们还可以负责并动态选择然后在页面上检索我们想要的内容,而不是简单地检索用户选择的内容,例如特定DIV的内容。这与简单地使用元素innerHTML或 innerText属性来获取其内容非常不同; 我们希望 通过JavaScript 实际选择该内容,这会打开其他可能的操作,例如将其复制到用户的剪贴板。
要选择非表单字段元素的文本内容,我们首先创建一个新的 Range对象并将其设置为包含所需的元素。然后,将范围添加到Selection对象以实际选择它。让我们看看它是如何工作的,这个函数根据传入元素的元素动态选择元素的文本内容:
1 2 3 4 五 6 7 | "vertical-align: inherit;">"vertical-align: inherit;">function selectElementText(el){"vertical-align: inherit;">"vertical-align: inherit;">
var range = document.createRange()//创建新的范围对象
range.selectNodeContents(el)//设置范围以包含所需的元素文本
var selection = window.getSelection()//从当前用户选择的文本中获取Selection对象
selection.removeAllRanges()//取消选择任何用户选择的文本(如果有)
selection.addRange(range)//为Selection对象添加范围以选择它
}
|
要创建一个用于添加范围的对象,我们使用; 因为默认情况下此方法会返回用户选择的文本(如果有的话),所以我们会立即调用其方法来清除平板。然后,我们开始创建一个空白范围,将元素的内容归零以选择使用,然后将该范围添加到对象中以进行选择。 Selection window.getSelection()removeAllRanges() range.selectNodeContents() Selection
一旦我们选择了我们想要阅读的文本,我们就转向我们之前的getSelectionText()方法来读取所选元素的内容,例如:
演示:
“我的妈妈总是说,'生活就像一盒巧克力。你永远不会知道你会得到什么。'” - Forrest
选择并检索文本
代码:
1 2 3 4 | "vertical-align: inherit;">"vertical-align: inherit;">var para = document.getElementById('para')"vertical-align: inherit;">"vertical-align: inherit;">
selectElementText(para)//选择我们希望阅读的元素文本
var paratext = getSelectionText()//读取用户选择
alert(paratext)//提醒“我的妈妈总是说...”
|
选择和读取表单元素的内容,如INPUT文本或TEXTAREA
为了选择和读取表格相关的字段值,例如INPUT文本和TEXTAREA,该过程不同于选择常规文本。我们大多数人已经知道选择表单字段的整个值,我们可以使用 inputElement.select()*,并检索该值,探测 inputElement.value。但是,还可以通过编程方式选择字段值的一部分并获取该值。让我们看看如何做到这一点。
- 以编程方式选择字段值的一部分
要动态选择INPUT文本或TEXTAREA元素的一部分,请使用此字段指示所需选择的起始和结束索引: formElement.setSelectionRange()
1 2 3 4 | "vertical-align: inherit;">"vertical-align: inherit;">var emailfield = document.getElementById(“email”)"vertical-align: inherit;">"vertical-align: inherit;">
emailfield.focus()//在setSelectionRange()工作之前,这在大多数浏览器中都是必需的
emailfield.setSelectionRange(0,5)//选择输入字段的前5个字符
emailfield.setSelectionRange(5,emailfield.value.length)//选择输入字段的第5个到最后一个字符
|
请注意,第二个参数 formElement.setSelectionRange()应该是要选择的结束字符的索引加1,因此要选择表单字段的前5个字符,要输入的结束索引值应为5或4(第5个字符的索引) )加1。
演示:
选择前5个字符 选择第5个到最后一个字符
*注意: 在iOS设备中(从iOS9开始),使用inputElement.select()快速选择所有表单元素的内容似乎不起作用。但是,使用inputElement.setSelectionRange()确实。因此,以下选择跨浏览器和设备的所有表单字段的文本:
inputElement.setSelectionRange(0, inputElement.value.length)
- 读取字段值的选定部分
无论如何选择表单字段的值的一部分,无论是通过使用setSelectionRange()动态选择该部分,还是用户拖动他/她的鼠标来进行用户定义的选择,检索选择的方法是获取指数选择的开始和结束字符,然后使用它们从表单字段的值中提取该部分。我们可以使用以下方法获取活动选择的索引:
上述属性对于从表单字段中获取任何用户选定文本特别有用,其中选择的索引尚不为人所知。以下演示回应了用户使用以下属性从TEXTAREA中选择的内容:
演示(在textarea中选择一些文本):
输出:
代码:
1 2 3 4 五 6 7 8 9 10 11 12 13 14 15 16 17 18 | "vertical-align: inherit;">"vertical-align: inherit;">"vertical-align: inherit;">"vertical-align: inherit;">
这里有一些文字"vertical-align: inherit;">"vertical-align: inherit;">
textarea>的
"vertical-align: inherit;">"vertical-align: inherit;">
div> "vertical-align: inherit;">"vertical-align: inherit;">
基本
文件
流程
错误
SQL
调试
- 请求信息 : 2026-05-20 05:19:23 HTTP/1.1 GET : /article/dgiioo.html
- 运行时间 : 9.5535s ( Load:0.0065s Init:5.0706s Exec:4.4602s Template:0.0162s )
- 吞吐率 : 0.10req/s
- 内存开销 : 2,335.91 kb
- 查询信息 : 12 queries 5 writes
- 文件加载 : 36
- 缓存信息 : 0 gets 0 writes
- 配置加载 : 130
- 会话信息 : SESSION_ID=cnsqme3u4cg09jd8ibg280ai21
- /www/wwwroot/tsicrk.com/index.php ( 1.09 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/ThinkPHP.php ( 4.61 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Think.class.php ( 12.26 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Storage.class.php ( 1.37 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Storage/Driver/File.class.php ( 3.52 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Mode/common.php ( 2.82 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Common/functions.php ( 53.56 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Hook.class.php ( 4.01 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/App.class.php ( 13.49 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Dispatcher.class.php ( 14.79 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Route.class.php ( 13.36 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Controller.class.php ( 11.23 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/View.class.php ( 7.59 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Behavior/BuildLiteBehavior.class.php ( 3.68 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Behavior/ParseTemplateBehavior.class.php ( 3.88 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Behavior/ContentReplaceBehavior.class.php ( 1.91 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Conf/convention.php ( 11.15 KB )
- /www/wwwroot/tsicrk.com/App/Common/Conf/config.php ( 2.14 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Lang/zh-cn.php ( 2.55 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Conf/debug.php ( 1.49 KB )
- /www/wwwroot/tsicrk.com/App/Home/Conf/config.php ( 0.31 KB )
- /www/wwwroot/tsicrk.com/App/Home/Common/function.php ( 3.33 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Behavior/ReadHtmlCacheBehavior.class.php ( 5.62 KB )
- /www/wwwroot/tsicrk.com/App/Home/Controller/ArticleController.class.php ( 6.02 KB )
- /www/wwwroot/tsicrk.com/App/Home/Controller/CommController.class.php ( 1.60 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Model.class.php ( 60.11 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Db.class.php ( 32.43 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Db/Driver/Pdo.class.php ( 16.74 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Cache.class.php ( 3.83 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Cache/Driver/File.class.php ( 5.87 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Template.class.php ( 28.16 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Template/TagLib/Cx.class.php ( 22.40 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Template/TagLib.class.php ( 9.16 KB )
- /www/wwwroot/tsicrk.com/App/Runtime/Cache/Home/7540f392f42b28b481b30614275e4e55.php ( 17.71 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Behavior/WriteHtmlCacheBehavior.class.php ( 0.97 KB )
- /www/wwwroot/tsicrk.com/ThinkPHP/Library/Behavior/ShowPageTraceBehavior.class.php ( 5.24 KB )
- [ app_init ] --START--
- Run Behavior\BuildLiteBehavior [ RunTime:0.000006s ]
- [ app_init ] --END-- [ RunTime:0.000034s ]
- [ app_begin ] --START--
- Run Behavior\ReadHtmlCacheBehavior [ RunTime:0.000332s ]
- [ app_begin ] --END-- [ RunTime:0.000357s ]
- [ view_parse ] --START--
- [ template_filter ] --START--
- Run Behavior\ContentReplaceBehavior [ RunTime:0.000076s ]
- [ template_filter ] --END-- [ RunTime:0.000105s ]
- Run Behavior\ParseTemplateBehavior [ RunTime:0.012572s ]
- [ view_parse ] --END-- [ RunTime:0.012605s ]
- [ view_filter ] --START--
- Run Behavior\WriteHtmlCacheBehavior [ RunTime:0.000208s ]
- [ view_filter ] --END-- [ RunTime:0.000228s ]
- [ app_end ] --START--
- 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') LIMIT 1' at line 1
[ SQL语句 ] : SELECT `id`,`pid`,`navname` FROM `cx_nav` WHERE ( id= ) LIMIT 1
- 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') LIMIT 1' at line 1
[ SQL语句 ] : SELECT `id`,`navname` FROM `cx_nav` WHERE ( id= ) LIMIT 1
- 1064:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
[ SQL语句 ] : SELECT `id`,`navname` FROM `cx_nav` WHERE ( pid= )
- [8] Undefined index: pid /www/wwwroot/tsicrk.com/App/Home/Controller/ArticleController.class.php 第 47 行.
- [8] Undefined index: db_host /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Db.class.php 第 120 行.
- [8] Undefined index: db_port /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Db.class.php 第 121 行.
- [8] Undefined index: db_name /www/wwwroot/tsicrk.com/ThinkPHP/Library/Think/Db.class.php 第 122 行.

9.5535s 
|