我正在使用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);
希望这可以帮助!
卡斯珀·泰曼斯