复制到剪贴板在FireFox上无法工作

3

我已经实现了复制到剪贴板的功能,这在IE的所有版本中都可以正常工作,但在FireFox中无法工作。请帮助我解决这个问题。 详细信息如下:

<script src="../../Scripts/JQPlugins/jquery.clipboard.js" type="text/javascript"></script>

<script src="../../Scripts/JQPlugins/jquery.clipboard.pack.js" type="text/javascript"></script>   
 <script type="text/javascript">
        $.clipboardReady(function() {
            $("input#buttonid").bind('click', function() {
                var text = $("#url").attr("href") + "\n" + $("#pwd").html();
                $.clipboard(text);
                alert("hi");
                return false;
            });
        }, { swfpath: "../../Scripts/JQPlugins/jquery.clipboard.swf", debug: true }); 

    </script> 

我的代码文件结构如下:

Project > Scripts > JQPlugins > 
1. jquery.clipboard.js
2. jquery.clipboard.pack.js
3. jquery.clipboard.swf

我可能错了,但这个功能没有被广泛实现的主要原因是出于安全方面的考虑。 - jldupont
Pankaj,Flash 10版之前的版本允许Flash与剪贴板交互而无需用户批准,这至少是令人讨厌的,最多也是一个安全问题。Flash 10不再允许这样做;请参阅我的答案,但我怀疑这就是您正在遇到的问题。 - delfuego
1个回答

11
您正在使用的复制文本到剪贴板的方法是jQuery clipboard插件。该插件使用IE本地功能将文本复制到剪贴板,但在非IE平台上使用Flash插件。我猜您的机器上已经安装了Flash 10,或者您正在测试Firefox的机器上已经安装了Flash 10 - Flash 10不再允许未经明确请求的剪贴板操作,这可能就是为什么您在Firefox上看到无法工作的原因。(甚至在插件的发布说明中也提到了这一点。)
话虽如此,人们已经找到了绕过安全限制的解决方案。解决方案涉及将一个隐藏的Flash电影放置在您选择的DOM元素之上,这意味着当用户单击或以其他方式调用元素以提交数据时,Flash电影将注册用户采取了明确的操作,并允许剪贴板操作。 Zero Clipboard是提供此解决方案的其中一种库,但如果您寻找它们,还有其他库可用。

谢谢@@delfuego..你是我唯一的希望..请告诉我该怎么做来解决这个问题?我是否可以更改代码并移动到其他实现方式或尝试其他东西? - Pankaj
Pankaj,我向你展示了一个选项 - 转移到链接的Zero Clipboard库。他们的网站上有一个组织良好的说明页面,解释了如何将其集成到您的项目中。 - delfuego
这个被踩的事实真是有趣,顺便问一下...怎么回事?并不是我在意,只是感到困惑...哦,我明白了,看起来有人(很容易猜到是谁)正在系统地浏览我的网站贡献并将其踩下去。好极了,好极了。 - delfuego
感谢 @@Delfuego...我正在尝试使用 Zero Clipboard,但我认为在 Firefox 和一些其他浏览器中,这个功能仍然存在一些问题,尤其是在 https 中。还有一件事,您确实拥有很好的知识,所以没有人可以在任何地方对您的贡献进行负面评价。他是在贬低自己。 - Pankaj

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接