2010-03-08 85 views
13

如果突出显示的文章的文字我已经看到了几个网站,现在在哪里,复制,然后粘贴在他们可以更多的文字,将其添加。编辑剪贴板中的数据时,复制/粘贴从一个网站

尝试从http://belfasttelegraph.co.uk/的文章中复制和粘贴一段文字,您会看到我的意思 - 他们在粘贴的文本中添加一个链接到原始文章。

这是如何完成的?我假设有一些JavaScript在这里

+1

有趣。我一直在竭尽全力去弄清楚如何防止*任何网站,永远不要这样做。谨慎使用。 – Ricky 2015-01-13 17:44:40

回答

8

这是一个很好的效果,你可以看到,在使用Firebug的副本解雇(在Firefox)的脚本。

启动萤火虫和加载页面,选择明确的(因为页面使用了大量的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和图像。

我想那该是多么的技术是通过使用图像获取要求更改剪贴板完成。

+0

我不知道我是否在路上捡起-1? – amelvin 2010-03-08 15:38:47

+1

+1使用Firebug的解释。 – 2012-03-01 04:54:59

3

工作你会发现,当你使用组合键[Ctrl + C键],这只会发生,而不是如果突出显示文本和选择从右键菜单复制。

它们只是捕获了[Ctrl + C]击键。

此外,将数据添加到剪贴板,看看这篇文章: How do I copy to the clipboard in JavaScript?

+0

不同意。我使用的是XP/Firefox 3.5.8,如果我突出显示,请右键单击并选择复制,然后将永久链接附加到复制的文本中。 – amelvin 2010-03-08 11:09:04

1

我最近注意到这个“剪贴板劫持”网站上的大量涌入。 thefutoncritic.com,cracked.com ...如果您使用Adblock,只需进入“手动条目”列表并添加* post-copypaste.js *即可。这应该防止网站将他们的广告添加到剪贴板。

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;