我可以从 text 或 textarea 之外的文本选择中获取 Javascript 事件吗?

Posted

技术标签:

【中文标题】我可以从 text 或 textarea 之外的文本选择中获取 Javascript 事件吗?【英文标题】:Can I get a Javascript event from the selection of text outside of text or textarea? 【发布时间】:2010-12-19 23:26:30 【问题描述】:

我想知道用户何时使用 javascripthtml 页面中选择文本。文本不应是可编辑的。 onselect 事件似乎只适用于<textarea><input type="TEXT"> 标签。如果任一标签被禁用,则不会触发该事件。

有没有办法用这些标签解决这个问题?

有完全不同的方法吗?

【问题讨论】:

我不知道有什么方法可以按照您的要求进行操作。但是,如果您试图阻止人们从您的网站复制和粘贴文本,这是不可能的。 可能重复:***.com/questions/1741119/… 【参考方案1】:

当然,这里有一个例子:http://www.codetoad.com/javascript_get_selected_text.asp

使用您在此处看到的内容,您可以将事件绑定到文档正文的单击/释放事件,并检查是否有选择,以及选择多长时间以确定他们是否选择了任何文本。

*** 存档:

    What's the event fired when a user selects text on a page? Javascript to get Paragraph of Selected Text in WebPage

【讨论】:

这对使用键盘或浏览器编辑/上下文菜单进行的选择没有帮助。【参考方案2】:

您可以捕获mouseUp 事件,并检查是否使用window.getSelection() 选择了某些文本。

但是,此方法可能不兼容跨浏览器(window.getSelection())。

编辑:这是一个非常完整的例子,mouseUp 绑定:http://mark.koli.ch/2009/09/use-javascript-and-jquery-to-get-user-selected-text.html

【讨论】:

【参考方案3】:

以跨浏览器的方式做到这一点并不容易。在 IE 中,只有 select 事件适用于正文文本和表单输入,因此可以执行您想要的操作,但要检测用户何时以跨浏览器方式进行选择,您需要同时处理 keyupmouseup 事件。即使那样,您也不会检测到选择事件,例如用户使用“全选”菜单选项(通常在“编辑”和右键单击上下文菜单中找到)。因此,您只需定期轮询并检查选择对象的属性(通过 IE 中的window.getSelection()document.selection 获得)。

【讨论】:

以上是关于我可以从 text 或 textarea 之外的文本选择中获取 Javascript 事件吗?的主要内容,如果未能解决你的问题,请参考以下文章

Textarea没有从左上角开始[重复]

如何在textarea中垂直居中文本?

IE中的文本区域最大长度

从 textarea flex3 中保存空格和换行符

如何从 textarea 中获取突出显示的文本位置?

ExtJS,无法将我的文本区域滚动到底部