gpt4 book ai didi

jquery - 如何使用 jQuery 和 ZeroClipboard 将 Ajax 响应加载到剪贴板?

转载 作者:行者123 更新时间:2023-12-01 06:09:32 25 4
gpt4 key购买 nike

我需要一种方法来将动态 (Ajax) 加载的内容复制到 Web 浏览器的剪贴板中。有许多库可以使用 Flash 模仿复制到剪贴板功能。然而,有了新的 Flash 10 default security settings ,复制到剪贴板设置现在需要明确的用户确认。 ZeroClipboard是一个 Javascript/Flash 库,可以绕过这个“限制”(使用 Flash 电影点击劫持)。

这是我编写的一个简单的 JQuery 插件,用于将 ZeroClipboard 集成到我的应用程序中:

// A jQuery plugin for copying Ajax content into clipboard
(function($) {
$.fn.clickToClipboard = function() {
$(this).each( function() {
var link = $(this);
if ( link.is('a') ) {
var clip = new ZeroClipboard.Client();
clip.glue(this);
clip.addEventListener('onMouseDown', function(){
link.html('copying...');
clip.reposition();
$.ajax({
url: link.attr('href'),
success: function(content) {
clip.setText(content);
},
async: false
});
});

clip.addEventListener('onComplete', function(){
link.html('copied!');
clip.reposition();
});
}
});
}
})(jQuery);

每个 anchor URL 都指向服务器上的一个文本文件。当Flash影片(点击劫持的链接)被点击时,它通过Ajax和ZeroClipboard将 anchor 相应的文本文件加载到剪贴板中。

这个插件在 Safari 中运行得很好(即使对于 4000 多行的prototype.js 文本文件也是如此)。但是,即使在只有一行“hello”的简单文本文件上,它也会在 FF3.0 上失败。 我已将 Ajax 调用的内容记录到控制台中。成功回调似乎确实有效。似乎第二次单击该影片即可完成复制(因为浏览器缓存了第一次 Ajax 调用的文本文件)。

请注意,我在此处使用了同步 Ajax 调用,以便等待文本完成加载。有人知道为什么我的代码不能按预期工作吗? (不确定是否相关,我的后端是在 Rails 中完成的)。

最佳答案

在我意识到我误解了你的问题后删除了我的第一个答案。抱歉。

我会尝试首先获取ajax数据,然后使用事件监听器设置文本。

关于jquery - 如何使用 jQuery 和 ZeroClipboard 将 Ajax 响应加载到剪贴板?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/890444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com