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/ZeroClipboard.js
加载。
/zeroclipboard/ZeroClipboard.swf
无法加载!
我尝试了一切,但无法让它发挥作用。我真的很困惑为什么它在domain1上工作但在domain2上没有?
我该如何解决这个问题?
非常感谢你的帮助!
答案 0 :(得分:2)
如果此文件与您的网页位于同一目录中,则它将开箱即用。但是,如果SWF文件托管在其他位置,则需要像这样设置URL(将此代码放在脚本标记之后):
ZeroClipboard.setMoviePath( 'http://YOURSERVER/path/ZeroClipboard.swf' );
要使用Zero Clipboard 1.0.7中提供的新Rich HTML功能,必须将影片路径设置为新的“ZeroClipboard10.swf”文件,该文件包含在1.0.7存档中。例如:
ZeroClipboard.setMoviePath( 'ZeroClipboard10.swf' );
或者,在当前目录以外的自定义位置:
ZeroClipboard.setMoviePath( 'http://YOURSERVER/path/ZeroClipboard10.swf' );
答案 1 :(得分:2)
http://kenneth.kufluk.com/blog/2008/08/cross-domain-javascript-to-flash/可能有所帮助。另外要注意子域名,Flash可能会感到困惑。还可以使用Flash调试播放器和Fiddler(或类似的)来查看发生了什么。
答案 2 :(得分: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
另外:如果在config中将debug设置为true,则当前主分支(2.x)将跨域记录到控制台。
我使用cdn托管版本的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)});
答案 3 :(得分:0)
可能希望尝试Fiddler以确切了解该文件的请求/响应。
答案 4 :(得分:0)
我在ZeroClipboard.min.js上解决了这一行的编辑问题
return a+"ZeroClipboard.swf"
为:
return "//YOUR/PATH/TO/ZeroClipboard.swf"
答案 5 :(得分:0)
同时设置moviePath和swfPath对我有用。
ZeroClipboard.config({ moviePath: '/assets/ZeroClipboard.swf', swfPath: '/assets/ZeroClipboard.swf', debug: true });