【发布时间】:2013-09-17 00:07:04
【问题描述】:
我有一个 HTML 表格,我看到人们复制/粘贴该表格的部分内容。当我尝试它时,结果是一团糟,需要大量清理,因为该表包含很多包含图像和内容的列。
有没有办法将选择限制在表格的前 2 列?
或
有没有办法替换正在复制的文本(用户选择“苹果”并按下复制,但“香蕉”最终出现在剪贴板中)?
【问题讨论】:
标签: javascript html
我有一个 HTML 表格,我看到人们复制/粘贴该表格的部分内容。当我尝试它时,结果是一团糟,需要大量清理,因为该表包含很多包含图像和内容的列。
有没有办法将选择限制在表格的前 2 列?
或
有没有办法替换正在复制的文本(用户选择“苹果”并按下复制,但“香蕉”最终出现在剪贴板中)?
【问题讨论】:
标签: javascript html
JavaScript 无法控制剪贴板,这是 Flash 的一种常见用途。
您可以在后一个表的<td> 元素上使用user-select: none 来阻止CSS 中的文本突出显示。由于user-select 是一个新属性,您必须为某些浏览器添加前缀:
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
-o-user-select: none;
user-select: none;
有关更多信息,请参阅http://css-tricks.com/almanac/properties/u/user-select/。还要注意user-select在IE9或更低版本中不可用。
【讨论】:
-webkit- 将在 Chrome/Safari 中运行,-ms- 在 IE10+ 中运行。您在使用什么浏览器时遇到问题?
user-select应用于什么?
This answer from a Trello developer 为类似于您想要做的事情提供了一个漂亮的解决方案。基本上,当用户按下 Cmd+C 或 Ctrl+C 时,您可以选择一些有用的东西,然后复制到剪贴板。
【讨论】:
为了限制列选择,我会按照 Mooseman 的建议使用用户选择。问题是浏览器目前支持他们自己的属性版本,而不是实际的用户选择。
<style>
.notSelectable{
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
}
</style>
你可以在http://caniuse.com/user-select-none查看它的支持
【讨论】: