【问题标题】:How to load an Ajax response into clipboard using jQuery and ZeroClipboard?如何使用 jQuery 和 ZeroClipboard 将 Ajax 响应加载到剪贴板?
【发布时间】:2010-10-27 18:54:32
【问题描述】:

我需要一种将动态 (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);

每个锚 url 指向服务器上的一个文本文件。当点击 flash 影片(click-jacked 链接)时,它会通过 Ajax 和 ZeroClipboard 将锚点对应的文本文件加载到剪贴板中。

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

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

【问题讨论】:

  • 我刚刚在生产模式下对此进行了测试,并且在 Safari 上也观察到了相同的行为。
  • 我的行为完全相同,但没有答案:(

标签: jquery flash clipboard zeroclipboard


【解决方案1】:

在我意识到我误解了你的问题后,删除了我的第一个答案。对不起。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多