Jquery ZeroClipboard или Zclip ничего в буфер обмена IE 8 и 7 - PullRequest
4 голосов
/ 13 июля 2011

Я использую плагин Jquery ZClip или ZeroClipboard, который копирует содержимое в буфер обмена с помощью кнопки или ссылки.Данные для копирования и ссылки / кнопки для активации загружаются с помощью ajax, который должен использовать плагин. Я прикрепляю элементы после их загрузки следующим образом:

$('#ajaxbutton').live('click', function() {
   $.ajax({
    type: "POST",
    url: "ajax.php",
    success: function(msg){
      $('a.ajaxcopymulti').zclip({
         path:'js/ZeroClipboard.swf',
         copy:function(){
         return $('p#ajaxdescription').text();
      }
    });
  });
});

и в ajax.php, например:

<p id="ajaxdescription">Ajax description copied to clipboard</p>
<p><a href="#" id="ajaxcopy">Click here to copy the above text</a></p>

Работает для всех других браузеров, кроме IE 7 и IE 8. Я получаю эту ошибку:

Unknown Runtime Error: ZeroClipboard.js, line 135 character 3

Поэтому в коде плагина я изменяю:

this.div.innerHTML = this.getHTML(box.width, box.height);

to:

$(this.div).html( this.getHTML( box.width, box.height ) ); 

Что избавляет от ошибки времени выполнения, но, похоже, ничего не копируется в буфер обмена для IE 7 и 8. Кто-нибудь достаточно знаком с этим, чтобы оказать некоторую помощь?Спасибо.

Ответы [ 3 ]

4 голосов
/ 23 августа 2011

Хорошо, я обнаружил, что идет не так в моем случае. вероятно, это будет та же проблема, что и вы.

IE выдает ошибку в этой строке

this.div.innerHTML = this.getHTML(box.width, box.height);

следующая строка

appendElem.appendChild(this.div);

здесь мы добавляем this.div к элементу "appendElem". appendElem - это объект DOM, и он зависит от того, где вы разместили поля html-копирования в своем html-коде. если быть точным, то это родитель второго уровня. выдается ошибка, когда appendElem не может содержать this.div в качестве дочернего узла. В моем случае мои копии полей, где в ячейках таблицы. appendELem в этом случае - это Row Object, который, очевидно, не может содержать какие-либо элементы div (firefox достаточно умен, чтобы очистить код). Я обернул свои поля копирования в дополнительные элементы div, чтобы appendElem был объектом DIV. чтобы узнать, какой объект содержит ваш appendElem, просто добавьте и добавьте функцию оповещения, например:

    alert(appendElem);
    appendElem.appendChild(this.div);

надеюсь, это поможет!

Каспер Тейманс

2 голосов
/ 25 ноября 2013

Я только что встретил эту проблему и решил ее. Это из-за неправильного тега html, плагин jquery добавит флэш-слой с div, поэтому убедитесь, что внешний слой тега html является div, это нормально.

2 голосов
/ 05 декабря 2012

Также убедитесь, что ваш браузер обновлен с помощью Flash Plugin, чтобы он работал правильно.

...