我现在看到了几个网站,如果你选中一篇文章的文本、复制,然后粘贴到该网站中,它们就会在你复制的文本中添加更多的文本。
试着从 http://belfasttelegraph.co.uk/ 的一篇文章中复制并粘贴一段文字,你就能看到我的意思 - 它们在粘贴的文本中添加了一个指向原文章的链接。
这是如何实现的?我猜测这里涉及到一些 JavaScript 脚本。
我现在看到了几个网站,如果你选中一篇文章的文本、复制,然后粘贴到该网站中,它们就会在你复制的文本中添加更多的文本。
试着从 http://belfasttelegraph.co.uk/ 的一篇文章中复制并粘贴一段文字,你就能看到我的意思 - 它们在粘贴的文本中添加了一个指向原文章的链接。
这是如何实现的?我猜测这里涉及到一些 JavaScript 脚本。
这是一个很好的效果,您可以使用Firebug(在Firefox中)查看复制时触发的脚本。
启动Firebug并加载页面,选择清除(因为页面使用了大量的ajax,所以很快就会有100个请求)。然后选择“全部”选项卡并尝试复制。您将看到一个1x1像素图像的请求,但如果按下+按钮查看详细信息,则会在“params”选项卡中看到此GET请求将您请求的文本作为“content”参数传递,并附带一些xpath信息,这些信息将用于操作剪贴板DOM:
start_node_xpath /HTML/BODY[@id='belfast']/DIV[@id='root']/DIV[@id='content']/DIV[@id='mainColumn']/DIV[@id='article']/DIV[5]/P[39]/text()
end_node_xpath /HTML/BODY[@id='belfast']/DIV[@id='root']/DIV[@id='content']/DIV[@id='mainColumn']/DIV[@id='article']/DIV[5]/P[41]/text()
正如 @Crimson 指出的那样,有一些方法可以操纵剪贴板,比如 zeroclipboard,它使用 Flash 和一个图像。
我认为这就是通过使用图像获取请求来更改剪贴板的技术所做的。
他们只是捕获了[Ctrl+C]按键。
此外,要将数据添加到剪贴板,请查看此帖子: 如何在JavaScript中复制到剪贴板?
其他网站使用的解决办法是使用jQuery和“copy” / “cut”事件:
$('body').bind('copy cut',function(e){manipulate();});
以下是一些示例: http://www.mkyong.com/jquery/how-to-detect-copy-paste-and-cut-behavior-with-jquery/
function addLink() {
var body_element = document.getElementsByTagName('body')[0];
var selection;
selection = window.getSelection();
// change this if you want
var pagelink = "<br><br>Fuente: Emol.com - <a href='"+document.location.href+"'>"+document.location.href+"</a><br>";
var copytext = selection + pagelink;
var newdiv = document.createElement('div');
newdiv.style.position='absolute';
newdiv.style.left='-99999px';
body_element.appendChild(newdiv);
newdiv.innerHTML = copytext;
selection.selectAllChildren(newdiv);
window.setTimeout(function() {
body_element.removeChild(newdiv);
},0);
}
document.oncopy = addLink;