文档设计模式下的剪贴板——北冥重生大法?
近日在工作过程中发现了一个很怪异的现象,在文档设计模式下的剪贴板在某些情况下,无法实现彻底清空。
第一步:将下面的代码用浏览器打开,用ctrl+v拷贝电脑其它地方任意一段文字进来后,剪贴板被清空,第二次按ctrl+v什么也不会发生,这是正常的现象。
第二步:接下来会发生什么?在编辑区选中刚才拷贝进来的文字,复制后,ctrl+v,再ctrl+v,再ctrl+v,再......你会发现这次复制的内容无法使用setData("Text","")和clearData("Text")清空,它们很顽强的继续存在着,先别忙着惊讶,再继续。
第三步:再次拷贝电脑其它地方任意一段文字,ctrl+v,哇,二合一了;ctrl+v again,剩下一半?
第四步:打开记事本,ctrl+v,谢天谢地,终于消失了!?
第五步:打开word,ctrl+v @#$^%#,北冥重生大法???
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE></TITLE>
</HEAD>
<script language="JavaScript" type="text/javascript">
function document.onreadystatechange()
{
Composition.document.designMode="On"
}
function InitDocument()
{
Composition.document.onkeydown = CatchCtrlV;
}
function CatchCtrlV()
{
var ev = this.parentWindow.event;
if ((ev.ctrlKey==true) && (ev.keyCode==86))
filtration();
}
function filtration()
{
var strCopy = window.clipboardData.getData("Text");
if(strCopy!=null)
{
Composition.document.selection.createRange().text = strCopy;
}
strCopy = null;
clipboardData.setData("Text","");
clipboardData.clearData("Text");
}
</script>
<BODY bgcolor="menu" STYLE="margin:0pt;padding:0pt" onload="InitDocument();">
<iframe class="Composition" ID="Composition" MARGINHEIGHT="1" MARGINWIDTH="1" width="100%" height="330">
</iframe>
<div align="center"><font color="#990000"><strong><font size="+7">北冥重生大法</font></strong></font>
</div>
</BODY>
</HTML>