<table id="tbl1" class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: medium none">
<tr>
<td width="91" valign="top" style="width: 68.4pt; border: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background: #E0E0E0">
<p class="MsoNormal"><span style="font-family: 宋体">表名</span></td>
</tr>
</table><script>
alert(tbl1.outerHTML)
var objTable=document.createElement("TABLE"),newTr,newTd;
objTable.id="tbl1";
objTable.className="myclass";
for(var i=0;i<tbl1.rows.length;i++){
newTr=objTable.insertRow();
for(var j=0;j<tbl1.rows[i].cells.length;j++){
newTd=newTr.insertCell();
newTd.colSpan=(tbl1.rows[i].cells[j].colSpan==null?1:tbl1.rows[i].cells[j].colSpan);
newTd.rowSpan=(tbl1.rows[i].cells[j].rowSpan==null?1:tbl1.rows[i].cells[j].rowSpan);
newTd.innerText=tbl1.rows[i].cells[j].innerText;
}
}
tbl1.outerHTML=objTable.outerHTML;
alert(document.all('tbl1').outerHTML)
</script>
<tr>
<td width="91" valign="top" style="width: 68.4pt; border: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background: #E0E0E0">
<p class="MsoNormal"><span style="font-family: 宋体">表名</span></td>
</tr>
</table><script>
alert(tbl1.outerHTML)
var objTable=document.createElement("TABLE"),newTr,newTd;
objTable.id="tbl1";
objTable.className="myclass";
for(var i=0;i<tbl1.rows.length;i++){
newTr=objTable.insertRow();
for(var j=0;j<tbl1.rows[i].cells.length;j++){
newTd=newTr.insertCell();
newTd.colSpan=(tbl1.rows[i].cells[j].colSpan==null?1:tbl1.rows[i].cells[j].colSpan);
newTd.rowSpan=(tbl1.rows[i].cells[j].rowSpan==null?1:tbl1.rows[i].cells[j].rowSpan);
newTd.innerText=tbl1.rows[i].cells[j].innerText;
}
}
tbl1.outerHTML=objTable.outerHTML;
alert(document.all('tbl1').outerHTML)
</script>
解决方案 »
- jquery slider游标step问题.
- 关于document.write
- object的click事件
- Javascript 调用 bat 问题
- 请问一个网页中两个按钮分别点出来不同的东西怎么做?
- SCRIPT5007: 无法获取属性“clientWidth”的值: 对象为 null 或未定义
- 高分求教!!如何使用JS控制动态交替显示几个Select元素, 并且可以自动伸缩相关的td?
- 如何用脚本修改xml文件,必须使文件xml中的改变,急急
- 两行代码而已,帮我解释一下(马上给分)
- 怎样模拟当mouse在table中某一个单元格时,将该整行的td都高亮显示?
- 请问用JavaScript能不能与控件进行大量数据(约有几十k)交互?
- 使一个单元格动态显示百分比,已完成的部分用各种颜色标记(如1%-35%用浅蓝等),没完成的用白色
我们在做项目的时候,遇到你的同样的问题,我们的解决方法是直接不用允许从外面COPY进HTML的东西,而是把它转换成TXT格式的,让他重新到这个HTML编辑器里重新排版,说下我的实现方法吧:
捕捉PASTE事件,
发生这个事件时,用我们自己的方法去替代它,
在这个事件里,我们把粘贴板里的,内容转换成TXT格式,PASTE到当前光标位置,分析:
触发PASTE事件的地方,共有两种,一种是CTRL V键盘按键触发,一种是菜单上调用
Composition.document.execCommand('paste')方法触发,所以我们需要的就是override掉这些方法的正常处理,而用我们自己的方法处理这些事件。
实现:
//这里是ctrl v的捕捉处理
function onkeydown(e)
{
var ev = this.parentWindow.event
if (ev.ctrlKey==true&&ev.keyCode==86) {
//ctrl v
Composition.document.selection.createRange().text=window.clipboardData.getData("Text");//到当前光标位置
ev.returnValue=false;//不允许继续去paste
}
}
同样,在你触发Composition.document.execCommand('paste');函数的地方,也应该去用方法替换掉
<script defer>
var html='<table class="MsoNormalTable" border="1" cellspacing="0" cellpadding="0" style="border-collapse: collapse; border: medium none">'
html+='<tr>'
html+='<td width="91" valign="top" style="width: 68.4pt; border: 1.0pt solid windowtext; padding-left: 5.4pt; padding-right: 5.4pt; padding-top: 0cm; padding-bottom: 0cm; background: #E0E0E0">'
html+='<p class="MsoNormal"><span style="font-family: 宋体">表名</span></p></td>'
html+='</tr>'
html+='</table>'
html=html.replace(/<([^\s]+)[^>]*>/g,"<$1>")
alert(html)
</script>
<table class="myclass">
<tr>
<td>
表名</td>
</tr>
</table>
------------------
可能你给的样本太简单,但原理就是这样,千变万化,总能总结出共性的东西,然后替换。正则总考虑到可能标签换行,因此用了[^>](.*|\n)>的样子,确实没有换行,这样:[^>]*>就行了。<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title>Prochtml</title>
<script language="JavaScript" type="text/JavaScript">
function ProcPaste ( obj ) {
var cText = clipboardData.getData("text");
cText = cText.replace ( /<table class=[^>](.*|\n)>/ig, '<table class="myclass">' );
cText = cText.replace ( /<td width=[^>](.*|\n)>/ig, "<td>" );
cText = cText.replace ( /<p class=[^>](.*|\n)><span style=[^>](.*|\n)>(.*)<\/span>/ig, "$3" );
obj.value = cText;
event.returnValue = false;
}
</script>
</head>
<body>
<textarea name="TargetArea" cols="60" rows="12" onpaste="ProcPaste(this)"></textarea>
</body></html>
http://expert.csdn.net/Expert/topic/1990/1990824.xml?temp=.2696192