代码之家  ›  专栏  ›  技术社区  ›  eozzy

ZeroClipboard SWF不加载

  •  7
  • eozzy  · 技术社区  · 14 年前
    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

    我什么都试过了,但没能成功。我真的很困惑为什么它在域1上工作而在域2上不工作??

    如何解决此问题?

    非常感谢你的帮助!

    6 回复  |  直到 11 年前
        1
  •  2
  •   Tomas Voracek    11 年前

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

        2
  •  2
  •   daihovey    14 年前

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

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

        ZeroClipboard.setMoviePath( 'ZeroClipboard10.swf' );
    

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

        ZeroClipboard.setMoviePath( 'http://YOURSERVER/path/ZeroClipboard10.swf' );
    
        3
  •  2
  •   Rimian    11 年前

    跨域资产有以下选项:

    // 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,那么当前主分支(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/

    zeroclipboard source 使用 grunt mxmlc

    例如,在 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)});
    
        4
  •  0
  •   JoshNaro    14 年前

    可能想试试 Fiddler 查看文件的请求/响应的确切外观。

        5
  •  0
  •   Herlon Aguiar    11 年前

    我解决了编辑这一行的问题零剪贴板.min.js

    return a+"ZeroClipboard.swf"
    

    收件人:

    return "//YOUR/PATH/TO/ZeroClipboard.swf"
    
        6
  •  0
  •   Freddy    9 年前

    设置moviePath和swfPath对我很有用。

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