我刚刚在线阅读“泰晤士报”,我想从文章中复制一些文字并将其发送给朋友,但我注意到,当我这样做时,它会自动将链接添加回我所拥有的文章中复制。
这不是我的IM客户端的功能,所以我认为这是因为时代网站上的一些javascript而发生的。
如果我想在我的网站上实现它,我将如何实现这一目标?基本上,我必须劫持复制操作并将文章的URL附加到复制内容的末尾,对吧?想法?
以下是我正在阅读的文章,供参考:http://www.time.com/time/health/article/0,8599,1914857,00.html
答案 0 :(得分:5)
使用jQuery(您引用的网站正在使用)是一件轻而易举的事情:
$("body").bind('copy', function(e) {
// The user is copying something
});
您可以使用jQuery Search&共享插件,只要有人从您的网站复制超过40个字符,就会执行完全事情:http://www.latentmotion.com/search-and-share/
您引用的网站显然正在使用名为Tynt Insight的服务来实现此目的。
答案 1 :(得分:1)
他们正在使用免费服务Tynt。如果你想完成同样的事情,只需使用相同的服务。
答案 2 :(得分:0)
您使用的浏览器(以及版本)?
在某些较新的浏览器中,会询问用户网站是否可以访问剪贴板,或者根本不允许。在其他浏览器(例如IE 6)中,它是允许的,网站可以轻松读取和写入您的副本剪贴板。
这是代码(仅限IE)
clipboardData.setData("Text", "I just put this in the clipboard using JavaScript");
答案 3 :(得分:0)
“复制和粘贴劫持者”jQuery插件完全符合您的要求,并且看起来比Tynt或Search&分享:http://plugins.jquery.com/project/copypaste
您可以轻松地格式化复制的内容,指定最大或最小字符,并轻松地将复制内容中的页面标题或URL包含在您想要的位置。
答案 4 :(得分:0)
我最近在另一个网站上注意到了这一点并写了blog post如何运作。 jQuery示例似乎并没有真正修改用户复制和粘贴的内容,只是添加了一个新的上下文菜单。
简而言之:
var content = document.getElementById("content");
content.addEventListener("copy", oncopy);
function oncopy() {
var newEl = document.createElement("p");
document.body.appendChild(newEl);
newEl.innerHTML = "In your copy, messing with your 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)
}
最后的setTimeout
非常重要,因为如果最后一部分立即执行,它似乎不起作用。
此示例使用我选择的字符串在最后一刻替换您选择的文本。你也可以抓住现有的选择,并将你想要的任何内容附加到最后。