2010-09-18 132 views
7
ZeroClipboard.setMoviePath("/zeroclipboard/ZeroClipboard.swf"); 
var clip = new ZeroClipboard.Client(); 
clip.setText($('textarea#download_me').text()); 
clip.glue('clip'); 

我使用流行的ZeroClipboard插件将内容复制到用户的剪贴板。它完全适用于开发环境,以及在domain1.com上,但在domain2.com上完全相同的文件和设置!ZeroClipboard SWF不加载

/zeroclipboard/ZeroClipboard.js加载。

/zeroclipboard/ZeroClipboard.swf无法加载!

我试过一切,但不能得到它的工作。我真的很困惑,为什么它在domain1上工作,但不在domain2上?

我该如何解决这个问题?

非常感谢您的帮助!

+0

你可以尝试加载(完整路径) – Dezigo 2010-09-18 12:49:31

+0

ZeroClipboard.setMoviePath( “domain2.com/js/zeroclipboard/ZeroClipboard.swf”); – Dezigo 2010-09-18 12:49:53

+0

如果它正在工作.. - 它是一个路径问题。 – Dezigo 2010-09-18 12:50:44

回答

2

如果此文件位于与您的网页相同的目录中,那么它将开箱即用。但是,如果SWF文件在其他地方托管,你需要这样设置URL(script标签后将此代码):

ZeroClipboard.setMoviePath('http://YOURSERVER/path/ZeroClipboard.swf'); 

利用现有的新的Rich HTML功能在零剪贴板1.0.7,您必须将电影路径设置为包含在1.0.7存档中的新“ZeroClipboard10.swf”文件。例如:

ZeroClipboard.setMoviePath('ZeroClipboard10.swf'); 

或者,在比当前目录以外的自定义位置:

ZeroClipboard.setMoviePath('http://YOURSERVER/path/ZeroClipboard10.swf'); 
+0

尝试使用'ZeroClipboard10.swf'仍然不起作用。它太奇怪了,我仔细检查了路径和一切,但它仍然不能在domain1上工作,但在domain2上运行良好! – 3zzy 2010-09-24 06:40:38

+0

我发现我有问题,当我重命名文件。 – Rimian 2014-02-27 23:47:31

0

可能想尝试Fiddler以准确查看文件的请求/响应的样子。

2

有跨域资产选择:

// SWF inbound scripting policy: page domains that the SWF should trust. (single string or array of strings) 
    trustedDomains: [window.location.host], 

参见: https://github.com/zeroclipboard/zeroclipboard/blob/master/docs/instructions.md

另外:当前的主分支(2.X)记录的交叉领域,如果你设置调试到真正的安慰在配置中。

我使用cdf托管版本的swf文件取得了一些成功。但是在做了一些编辑之后,这个神秘地停止在本地工作,但在我的登台服务器上工作。

这是我的配置:

ZeroClipboard.config({ 
    moviePath: '//cdnjs.cloudflare.com/ajax/libs/zeroclipboard/1.3.2/ZeroClipboard.swf', 
    forceHandCursor: true, 
    debug: true 
    }); 

也看到这个的jsfiddle:
http://jsfiddle.net/rimian/45Nnv/

如果您仍然遇到问题,您可以登录从SWF安慰。为此,您需要能够使用grunt mxmlc将闪存从zeroclipboard source编译为swf。简单地派遣在动作脚本日志事件(编译并将其复制到你的项目),并在您的JS对此作出回应:

例如,在ZeroClipboard.as

// constructor, setup event listeners and external interfaces 
public function ZeroClipboard() { 

    ... 

    // Get the flashvars 
    var flashvars:Object = LoaderInfo(this.root.loaderInfo).parameters; 

    dispatch("log", flashvars); 

    ... 

    } 
在你的js

然后:

zeroclipboard = new ZeroClipboard($('.mybuttons')) 
zeroclipboard.on('log', function(client, args) { console.log('log:', args)}); 
0

我解决了上编辑ZeroClipboard.min.js

return a+"ZeroClipboard.swf" 

这行:

return "//YOUR/PATH/TO/ZeroClipboard.swf" 
0

设置moviePath和swfPath都适用于我。

ZeroClipboard.config({ moviePath: '/assets/ZeroClipboard.swf', swfPath: '/assets/ZeroClipboard.swf', debug: true });