JavaScript操作剪贴板出现OpenClipboard Failed异常
JavaScript操作剪贴板出现OpenClipboard Failed异常,网上查找无果,基本上是CS客户端程序操作剪贴板出现此异常。请教诸位是何原因?有何解决办法?
IE7和IE8下都会出现这个问题。代码如下:
/*
功能: 将传入的文本复制到剪贴板上
返回值: 复制到剪贴板 结果(Boolean)
*/
function fnCopyText(ControlText) {
try {
event.returnValue = false;
//var bResult = e.dataTransfer.setData("Text", ControlText);
window.clipboardData.clearData("Text"); //清除剪贴板数据
//以文本格式给 window.clipboardData 对象赋予数据。
var bResult = window.clipboardData.setData("Text", ControlText);
//document.execCommand("copy");//执行命令方式
//校验是否复制成功: 以从剪贴板取得的数据与源数据是否相同为准
var s = window.clipboardData.getData("Text");
// || (e.dataTransfer ? e.dataTransfer.getData("Text") : "");
if(s == ControlText) {
bResult = true;
} else {
bResult = false;
}
} catch (e) {
//IE下window.clipboardData.setData和getData会报
//"OpenClipboard Failed"错误,但可能复制成功了
//估计是多个语句同时访问(读取/设置/清空)剪贴板所致
//alert(e.message);
}
finally {
if(bResult)
window.alert(ControlText);//如果复制成功不需要提示, 可以将此句注释. '复制选定文本到剪贴板成功: '
else
window.alert("复制选定文本到剪贴板失败,请重试!");
return bResult;
}
}
出现异常的语句可以是window.clipboardData.setData和window.clipboardData.getData,出现错误的概率大概是10%左右。个人猜测是多个语句同时访问(读取/设置/清空)剪贴板所致。这段语句很平常,网上到处都是用这种方法进行剪贴板操作,但是为什么没有人提及这个错误?
浙公网安备 33010602011771号