有没有办法允许用户从网站复制文本,文本是否未格式化?

时间:2015-02-04 21:05:20

标签: html css

几乎就是这个问题。我有一个客户要求负面设计在整个网页上都有几乎白色的文字,但测试人员说,从网站上复制和粘贴很麻烦,因为在复制到Word或者复制到Word时,所有内容都显示为白色文本等。

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

4 个答案:

答案 0 :(得分:3)

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

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

How do I copy to the clipboard in JavaScript?

Get the Highlighted/Selected text

答案 1 :(得分:3)

使用此处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)
});

感谢大家的帮助!

答案 2 :(得分:2)

Ctrl + alt + v或ctrl + shift + v应将剪贴板上的内容粘贴为无格式文本。将代码示例复制到word文档非常方便。如果您将cmd替换为Ctrl

,这也适用于Mac

答案 3 :(得分:0)

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

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

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

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

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