【问题标题】:Is there a way to allow users to copy text from a website, and the text be unformatted?有没有办法让用户从网站复制文本,并且文本没有格式化?
【发布时间】:2015-02-05 05:42:06
【问题描述】:

差不多就是这个问题。我有一个客户要求在整个网页上使用几乎是白色的文本进行否定设计,但测试人员说从网站复制和粘贴很烦人,因为在复制到 Word 等时所有内容都显示为白色文本。

当用户尝试从网站复制文本时,有没有办法预先删除格式?或者有没有办法劫持实际放在剪贴板上的内容?

【问题讨论】:

  • 我认为使用一点 jquery 或 vanilla.js 是可能的:D
  • 对我来说听起来更像是一个用户培训问题。向测试人员展示如何在 Word 中“无格式”粘贴。
  • 绝对是用户问题,但如果这是我可以解决的问题,我更愿意优化技术不太熟练的用户体验。
  • @jrq 所以建议只是寻找不同的用户。伟大的。政客和所有客户服务代理都同意。
  • @Someone。不,建议不要寻找不同的客户。 OP 声明“测试人员”在抱怨,而不是客户。我认为拦截 UI 中的预期行为并用其他东西替换它是愚蠢的。如果我从网站复制某些内容,有时我会想要格式,有时我不会。我反对提前为我做出的决定。

标签: html css


【解决方案1】:

使用此处Javascript: Hijack Copy? 和此处Get the Highlighted/Selected text 的代码(感谢@Jacque Goupil)我能够拼凑以下代码,从页面上复制的任何内容中剥离格式:

$("body").bind('copy', function(e) {
var newEl = document.createElement("p");
document.body.appendChild(newEl);

if (window.getSelection) {
    newEl.innerHTML = window.getSelection().toString();
} else if (document.selection && document.selection.type != "Control") {
    newEl.innerHTML = document.selection.createRange().text;
}

var selection = document.getSelection();
var range = selection.getRangeAt(0);
selection.selectAllChildren(newEl);

setTimeout(function() {
    newEl.parentNode.removeChild(newEl);
    selection.removeAllRanges();
    selection.addRange(range);
}, 0)
});

感谢大家的帮助!

【讨论】:

  • 很高兴您能找到解决方案。这是真正的答案。关于学习 Ctrl + Shift + V 和其他变通办法的所有其他答案似乎都不明白真正的问题出在哪里。
【解决方案2】:

默认情况下剪贴板中的内容取决于浏览器。像 Microsoft Word 这样的文本处理器通常可以选择忽略粘贴的样式,所以如果他们学会如何正确使用它应该不是问题。

如果您仍然想让人们的生活更轻松,您可以检测复制事件并将格式化的文本替换为原始文本。这可能会对您有所帮助:

How do I copy to the clipboard in JavaScript?

Get the Highlighted/Selected text

【讨论】:

  • 这些链接帮助很大!使用后者,我能够拼凑一些代码以获得一个非常简单的解决方案。
【解决方案3】:

Ctrl + alt + v 或 ctrl +shift + v 应该将剪贴板上的内容粘贴为未格式化的文本。将代码示例复制到 word 文档非常方便。如果您将 cmd 替换为 Ctrl,这也应该在 Mac 上工作

【讨论】:

  • 对我来说,这足以回答。考虑到这条评论:stackoverflow.com/questions/28331422/…,我们应该尽量不要覆盖这种东西的默认行为,并学习一些新的快捷方式:)。 +1。
  • 非常好的一点是不要搞乱默认行为,而是学习一种正确的方法。谢谢!
【解决方案4】:

在 Word 中,您可以选择“粘贴为纯文本”(或“不带格式粘贴”,不确定英文的确切名称)。这样,您可以轻松地从任何网站粘贴文本而无需标记。

我认为实施“没有标记的副本”不应该是网站的责任。

其他技巧:首先在记事本中粘贴带有标记的文本。然后在记事本中选择它并再次复制。剪贴板现在只包含纯文本。

当然,教育用户很难,但除非有充分的理由让人们从网站上复制文本,否则我不会为它定制实现。这些实现,尤其是当您覆盖默认行为(捕获 Ctrl+C)时,可能无法在每个浏览器中正常工作或至少相同,它们只是您网站的修复,而不是其他所有人的修复。此外,这样的功能可能会惹恼其他确实知道如何处理带有标记的文本的用户。所以我觉得还是让用户自己去了解比较好。

至于劫持剪贴板,如果你复制 HTML,浏览器实际上会复制多种格式的内容,如 HTML、RTF 和纯文本。如果你有办法,你可以简单地从剪贴板中删除 HTML 和 RTF 版本并保留纯文本版本。但我很确定您对浏览器的剪贴板没有太多控制权。

【讨论】:

  • 真实无用。您建议打电话给每个不满的(潜在)客户并与之争论吗?好吧...我认为这里的客户提示不会被他们阅读...
  • @Someone,感谢您的建设性反馈。我认为,如果您将纯文本副本实现为普通副本的覆盖,另一半用户会感到不满。此外,对于确实知道如何使用文字处理器并希望能够复制带有标记的文本的用户来说,这将是大量的工作并且是违反直觉的。
  • @Someone:这取决于。问题是关于 testers 的复制和粘贴。他们有充分的理由从网站上大量复制(例如,发送有关错误的电子邮件、建议更改等);根据网站的不同,用户(可能是也可能不是客户!)通常会从网站复制和粘贴。
猜你喜欢
  • 2013-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-12
  • 2021-11-27
  • 2012-10-17
  • 2011-07-21
  • 1970-01-01
相关资源
最近更新 更多