剪贴板IE 8和7中没有Jquery ZeroClipboard或Zclip

我正在使用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中例如:

 

Ajax description copied to clipboard

Click here to copy the above text

适用于除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在这种情况下是一个Row Object,显然不能包含任何div(firefox足够聪明,可以清理代码)。 我将我的copyfields包装在额外的div中,所以appendElem将是一个DIV对象。 要知道你的appendElem包含的对象只是添加和警告function,如下所示:

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

希望这可以帮助!

Kasper Taeymans

另外,请确保使用Flash插件更新浏览器,以使其正常工作。

我刚刚遇到这个问题,并解决了它。 这是因为html标签不正确,jquery插件会添加一个带有div的flash层,所以确保html标签最外层是div,没关系。