其实最初是因为在项目中使用了html网页编辑器,通过ie的com组件和javascript通讯完成一些事情,其中有一个功能是插入表格,我们原本使用的range.pasteHTML(HTMLstr);根据用户传入的行和列等参数在javascript端创建好用户想要的表格的html字串,然后的然后,测试人员就发现一个bug,因为这种pasterHTML会破坏TextArea原本的剪切板内容,会直接导致无法撤销到插入表格之前(包含插入表格)的状态。
有一个同事想出一个方法,使用剪切板来代替pasterHTML这样的操作,因为粘贴一个html有格式的内容是可以撤销的,这样就又会涉及到一个问题,如果借用了剪切板的内容就需要备份之前的内容,并在使用完之后恢复,不管原来是图片、纯文本、还是word、表格、带格式的复杂的内容。
首先在MSDN上找到这篇文章:http://msdn.microsoft.com/en-us/library/windows/desktop/ms649015%28v=vs.85%29.aspx
因为我需要加入的是一个html表格所以找来了它所需要的格式,并使用SetClipboardData进行设置。
官方格式示例:
Version:0.9 StartHTML:71 EndHTML:170 StartFragment:140 EndFragment:160 StartSelection:140 EndSelection:160 <!DOCTYPE> <HTML> <HEAD> <TITLE> The HTML Clipboard</TITLE> <BASE HREF="http://sample/specs"> </HEAD> <BODY> <UL> <!--StartFragment --> <LI> The Fragment </LI> <!--EndFragment --> </UL> </BODY> </HTML>