网页中文本复制的两种方法

适用于:IE5.X及之上版本

在某些情况下,我们希望在我们网页中的一些文字很方便的提供给用户复制的功能。比如你的编写了一个HTML或者C#的教程,放到你的个人网页上,其中有些源代码可以让用户直接复制,如果你把代码直接写成到一个<P>或者<DIV>当中,当用户复制了你的网页中的代码,在某些编辑器里,你提供的代码会带有HTML的标签,这是因为网页文本的复制是HTML代码的复制。

为了解决这个问题,通常我们采用下面的方法。
一、使用TextArea存放复制文本
由于从网页的Form对象中复制的文本是不转成HTML代码的纯文本,所以通常情况下,网页中
的复制文本都采用TextArea来存放。下面提供了例子,代码如下:
TextAreaTest.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Text Area Test</title>
</head>

<body>
<textarea id="inbuiltCodeByText" readonly="true" style="BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-LEFT: #000 1px solid; WIDTH: 100%; BORDER-BOTTOM: #000 1px solid; HEIGHT: 10em">
&lt;TABLE cellSpacing=1 cellPadding=1 width="75%" border=1&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;
&lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
</textarea>
</div>
<p><input name="btnCopy" type="button" id="btnCopy" οnclick="window.clipboardData.setData('Text',inbuiltCodeByText.value)" value="Copy Text">
&nbsp;&nbsp;<input name="btnSelect" type="button" id="btnSelect" οnclick="inbuiltCodeByText.select()" value="Select Text">
</p>
</p>

</body>
</html>


这段html中的textarea里存放了一段html的表格代码,此外还提供了两个按钮,一个点击之后复制textarea中的文本,一个点击之后选择textarea中的文本。clipboardData对象提供了一个setData方法,用来设置网页的剪贴板中的数据。Form对象都有一个select()方法,可以用来选择Form对象中文本或值。

textarea是很常见的存放复制文本的对象,但是如果你希望你的代码中某些重点部分能够加上颜色或者加重,就像程序代码编辑器中一样,就没有办法实现了,因为textarea中的都是纯文本。

我这里有一个方法可以实现你需要的代码效果,而且复制的文本也不带有html标签。

二、使用div存放复制文本
前面我们已经提到过clipboardData对象的setData方法,可以设置网页的剪贴板中数据。将复制文本放在div中通过setData方法改变复制文本,同时div中的文本是可以设置样式的,这就实现了我们想要得效果,下面是一个范例,代码如下:
DivTextTest.htm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Div Text Test</title>
</head>

<body>
<div id="inbuiltCodeByDiv" style="BORDER-RIGHT: #000 1px solid; BORDER-TOP: #000 1px solid; OVERFLOW: auto; BORDER-LEFT: #000 1px solid; WIDTH: 100%; CURSOR: text; BORDER-BOTTOM: #000 1px solid; HEIGHT: 10em" οncοpy="window.clipboardData.setData('Text',this.innerText)">
 <span style="color:red">&lt;TABLE cellSpacing=1 cellPadding=1 width=&quot;75%&quot; border=1&gt;</span><br>
 &lt;TR&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;<br>
 &lt;TR&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;<br>
 &lt;TR&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;<br>
 &lt;TD&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TABLE&gt;
</div>
<p>
&nbsp;<input type="button" value="Copy Text Code" id="btnCopyText" οnclick="window.clipboardData.setData('Text',inbuiltCodeByDiv.innerText)">
&nbsp;&nbsp;<input type="button" value="Copy HTML Code" id="btnCopyHTML" οnclick="window.clipboardData.setData('Text',inbuiltCodeByDiv.innerHTML)">
&nbsp;&nbsp;<input type="button" value="Select Text" id="btnSelectText" οnclick="var cr=document.body.createTextRange();cr.moveToElementText(document.getElementById('inbuiltCodeByDiv'));cr.select()">
</p>
</body>
</html>

这段代码演示了一个存放在div中table html代码,第一行设置为红色,还提供有三个按钮来处理复制文本,复制html和选择文本。对于不使用按钮复制的,我们通过div的oncopy事件来改变剪贴板文本。

本文主要介绍了不同于textarea的网页复制文本的存放对象的使用方法,测试代码在ie5.x及之上通过,对于其他厂商的浏览器,上述代码不支持。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值