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%左右。个人猜测是多个语句同时访问(读取/设置/清空)剪贴板所致。这段语句很平常,网上到处都是用这种方法进行剪贴板操作,但是为什么没有人提及这个错误?