我现在看到一些网站,如果你突出文章的文字,复制它,然后粘贴,他们可以添加更多的文字。
尝试复制并粘贴http://belfasttelegraph.co.uk/文章中的一段文字,您会看到我的意思 - 他们会在粘贴的文字中添加原始文章的链接。
这是怎么做到的?我假设这里有一些javascript工作
答案 0 :(得分:8)
这是一个很好的效果,您可以看到使用Firebug(在Firefox中)在副本上触发的脚本。
启动Firebug并加载页面,选择clear(因为页面使用了很多ajax,有很快的100个请求)。然后选择“全部”选项卡并尝试复制。您将看到1x1像素图像的请求,但如果您按+按钮查看详细信息,您将在'params'选项卡中看到此GET请求将您请求的文本作为'content'参数传递,将用于操纵剪贴板DOM的xpath信息:
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指出的那样,有一些操作剪贴板的方法,like zeroclipboard使用Flash和图像。
我认为通过使用图像获取请求来更改剪贴板是如何完成该技术的。
答案 1 :(得分:3)
您会注意到只有当您使用组合键[Ctrl + C]时才会发生这种情况,如果您突出显示文本并从右键单击菜单中选择了副本,则不会发生这种情况。
他们只是捕捉[Ctrl + C]击键。
此外,要将数据添加到剪贴板,请查看此帖子: How do I copy to the clipboard in JavaScript?
答案 2 :(得分:1)
我最近注意到这个"剪贴板劫持"在网站上。 thefutoncritic.com,cracked.com ...如果您使用Adblock,请进入"手册条目"列出并添加 * post-copypaste.js * 。这样可以防止网站将广告添加到剪贴板中。
答案 3 :(得分:1)
其他网站使用的其他解决方案是使用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/
答案 4 :(得分:0)
我访问的新闻网站使用此功能附加"来源"复制的选择:
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;