我正在使用 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);
希望这对您有所帮助!
卡斯帕·泰曼斯
关于javascript - 剪贴板 IE 8 和 7 中的 Jquery ZeroClipboard 或 Zclip 什么都没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6682178/