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/ZeroClipboard.js负载。

/zeroclipboard/ZeroClipboard.swf不加载!

我尝试了一切,但无法让它工作。我真的很困惑为什么它适用于 domain1 而不是 domain2?

我该如何解决这个问题?

非常感谢您的帮助!

4

6 回答 6

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

另外:如果您在配置中将 debug 设置为 true,当前的 master 分支 (2.x) 会将跨域记录到控制台。

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

这是我的配置:

  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. 只需在操作脚本中发送一个日志事件(编译并将其复制到您的项目中)并在您的 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)});
于 2014-02-27T10:22:23.097 回答
2

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

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

要使用零剪贴板 1.0.7 中提供的新富 HTML 功能,您必须将影片路径设置为新的“ZeroClipboard10.swf”文件,该文件包含在 1.0.7 存档中。例子:

    ZeroClipboard.setMoviePath( 'ZeroClipboard10.swf' );

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

    ZeroClipboard.setMoviePath( 'http://YOURSERVER/path/ZeroClipboard10.swf' );
于 2010-09-24T01:24:56.730 回答
2

http://kenneth.kufluk.com/blog/2008/08/cross-domain-javascript-to-flash/可能会有所帮助。还要注意子域,Flash 可能会混淆。还可以使用 Flash 调试播放器和 Fiddler(或类似的)来查看发生了什么。

于 2010-09-26T21:25:00.110 回答
0

我解决了在 ZeroClipboard.min.js 上编辑这一行的问题

return a+"ZeroClipboard.swf"

至:

return "//YOUR/PATH/TO/ZeroClipboard.swf"
于 2014-08-29T03:50:49.737 回答
0

可能想尝试Fiddler来查看文件的请求/响应到底是什么样的。

于 2010-09-27T13:47:54.063 回答
0

设置 moviePath 和 swfPath 对我有用。

ZeroClipboard.config({ moviePath: '/assets/ZeroClipboard.swf', swfPath: '/assets/ZeroClipboard.swf', debug: true });
于 2016-07-11T07:37:37.163 回答