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

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

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

有完全不同的方法吗?

【问题讨论】:

  • 我不知道有什么方法可以按照您的要求进行操作。但是,如果您试图阻止人们从您的网站复制和粘贴文本,这是不可能的。

标签: javascript text onselect


【解决方案1】:

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

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

StackOverflow 存档:

  1. What's the event fired when a user selects text on a page?
  2. 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 获得)。

    【讨论】:

      猜你喜欢
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-17
      • 1970-01-01
      • 2011-08-15
      • 2018-05-15
      相关资源
      最近更新 更多