我可以从 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 【问题描述】:我想知道用户何时使用 javascript 在 html 页面中选择文本。文本不应是可编辑的。 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
事件适用于正文文本和表单输入,因此可以执行您想要的操作,但要检测用户何时以跨浏览器方式进行选择,您需要同时处理 keyup
和mouseup
事件。即使那样,您也不会检测到选择事件,例如用户使用“全选”菜单选项(通常在“编辑”和右键单击上下文菜单中找到)。因此,您只需定期轮询并检查选择对象的属性(通过 IE 中的window.getSelection()
或document.selection
获得)。
【讨论】:
以上是关于我可以从 text 或 textarea 之外的文本选择中获取 Javascript 事件吗?的主要内容,如果未能解决你的问题,请参考以下文章