ZeroClipboard SWF не загружается - PullRequest
       38

ZeroClipboard SWF не загружается

7 голосов
/ 18 сентября 2010
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 ??

Как мне решить эту проблему?

Большое спасибо за вашу помощь!

Ответы [ 6 ]

2 голосов
/ 27 февраля 2014

Есть варианты для междоменных активов:

// 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) регистрирует междоменные домены на консоли, если вы установили для debug значение true в конфигурации.

У меня был некоторый успех при использовании размещенной на 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 на консоль. Для этого вам нужно иметь возможность скомпилировать флэш-память из источника zeroclipboard в 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)});
2 голосов
/ 27 сентября 2010

http://kenneth.kufluk.com/blog/2008/08/cross-domain-javascript-to-flash/ может помочь. Также остерегайтесь поддоменов, Flash может запутаться. Также используйте Flash Debug Player и Fiddler (или аналогичный), чтобы увидеть, что происходит.

2 голосов
/ 24 сентября 2010

Если этот файл находится в том же каталоге, что и ваша веб-страница, то он будет работать из коробки. Однако, если SWF-файл размещен в другом месте, вам нужно установить URL-адрес следующим образом (поместите этот код после тега script):

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

Чтобы использовать новую функцию Rich HTML, доступную в Zero Clipboard 1.0.7, необходимо указать путь к фильму для нового файла "ZeroClipboard10.swf", который включен в архив 1.0.7. Пример:

    ZeroClipboard.setMoviePath( 'ZeroClipboard10.swf' );

Или в другом месте, отличном от текущего каталога:

    ZeroClipboard.setMoviePath( 'http://YOURSERVER/path/ZeroClipboard10.swf' );
0 голосов
/ 11 июля 2016

Настройка обоих moviePath и swfPath у меня сработала.

ZeroClipboard.config({ moviePath: '/assets/ZeroClipboard.swf', swfPath: '/assets/ZeroClipboard.swf', debug: true });
0 голосов
/ 29 августа 2014

Я решил отредактировать эту строку на ZeroClipboard.min.js

return a+"ZeroClipboard.swf"

до:

return "//YOUR/PATH/TO/ZeroClipboard.swf"
0 голосов
/ 27 сентября 2010

Возможно, стоит попробовать Fiddler , чтобы увидеть, как именно выглядит запрос / ответ для файла.

...