【问题标题】:Filter selection on cut/copy with javascript?使用 javascript 对剪切/复制进行过滤选择?
【发布时间】:2011-03-29 19:01:22
【问题描述】:

在我的一个网站上,我大量使用 ­ 来在网络浏览器中提供更好的断字。不幸的是,它们会因复制或剪切和粘贴而损坏,所以当人们从我的网站上复制时,文章会出现额外的连字符,这真的很烦人。我在这里夸大了一点,但你明白了。

我希望有一种方法来过滤副本上的选择 - 基本上是在它们到达剪贴板之前删除 ­ 的机会。 我怀疑这是不可能的, 根据我所阅读/研究的内容,但我想我会在这里询问集体智慧,以防我错过了什么。

一个漂亮的伪代码示例:

element.oncopy = function (ev) {
    ev.selection.replace(/­/g, '');
    return true; // or ev, I suppose
}

【问题讨论】:

  • <wbr /> 怎么样?这是一篇有趣的文章cs.tut.fi/~jkorpela/shy.html
  • <wbr /> 不会在断词处提供连字符,这对于英语是必需的。我可以使用 wbr:after { content: '-' } 通过 css 创建连字符,但是您无法区分正在使用和未使用的 <wbr />s,所以不妨只使用连字符。
  • 啊,我明白了。我以为你会得到一个连字符我的道歉。 quirksmode.org/oddsandends/wbr.html

标签: javascript copy


【解决方案1】:

查看这篇关于oncopy 事件的文章。我认为这正是您所需要的:http://help.dottoro.com/ljwexqxl.php

下页的示例 #2 解释了如何以跨浏览器友好的方式使用剪贴板(因为只有 IE 可以访问第一篇文章中使用的 clipboardData 对象):http://help.dottoro.com/ljxundda.php

该页面还提到在某些情况下,安全限制可能会阻止跨浏览器方法工作,这就是为什么一些网站使用 Flash 来操作剪贴板的原因。这是一篇讨论该方法的文章,以防它听起来像你想要的:http://www.jeffothy.com/weblog/clipboard-copy/

编辑

看看Hyphenator.js。它是一种在客户端智能地对文本进行断字的 JavaScript 方法。快速使用演示 (which can be found here),它似乎将连字符从复制的文本中删除。更改您的内容以使用它而不是 ­ 可能会很痛苦,但看起来它会实现您的所有目标。

【讨论】:

  • 在问之前我也看到了。我无法让代码在 Chrome 上运行,谷歌搜索表明 execCommand 不是一个可靠的选择。你用这种方法成功了吗?
  • 并非如此。我认为 Flash 选项是可靠的,但你甚至不能指望它,因为有些用户可能没有安装/启用插件,或者他们可能从 iOS 复制浏览器等。看看我的答案的更新部分,它可能会有些兴趣。
  • 一定会调查的。我目前正在做服务器端的断字,但这可能值得在客户端做,或者我可以尝试弄清楚它如何让客户端被排除在复制之外。
  • 哇,这是一个大脚本:)
猜你喜欢
  • 2013-03-09
  • 2016-10-26
  • 2010-12-20
  • 2019-11-04
  • 2010-11-28
  • 2017-10-11
  • 2021-11-07
  • 2016-09-26
  • 1970-01-01
相关资源
最近更新 更多