我正在使用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);

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

哪个可以消除运行时错误,但是似乎没有任何内容可以复制到IE 7和8的剪贴板中。是否有人对此有所了解以提供帮助?谢谢。

最佳答案

好的,我发现我的情况出了问题。可能与您的经验相同。

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是一个行对象,该对象显然不能包含任何div(firefox非常聪明,可以清理代码)。我将复制字段包装在额外的div中,因此appendElem将成为DIV对象。要知道您的appendElem包含哪个对象,只需添加和警报功能,如下所示:
    alert(appendElem);
    appendElem.appendChild(this.div);

希望这可以帮助!

卡斯珀·泰曼斯

07-24 16:37