通过java script脚本复制网页上的一个表格
今天有人问我一个问题:如何通过js脚本复制网页上的一个表格?看起来似乎比较有难度,不过还是搞定了,顺便把解决这个问题的过程记录下来,希望能对写脚本的兄弟们有所帮助。
以前没有写过这种脚本,不过想起来前不久刚看到一个脚本可以实现全选HTML编辑器的内容,于是想到一个方案:使用脚本将该表格插入HTML编辑器中,然后全选HTML编辑器内容,执行HTML编辑器的复制命令,即可实现复制表格功能,很快搞定:
<INPUT TYPE="button" value="复制测试表格" onclick="CopyTable()">
<INPUT TYPE="button" value="将剪切板内容输出到编辑器中" onclick="PastClipboardData()">
测试
<TABLE id="oTable">
<TR>
<TD>测试表格</TD>
<TD>测试表格</TD>
</TR>
<TR>
<TD>测试表格</TD>
<TD>测试表格</TD>
</TR>
</TABLE>文字
<iframe id="editor" src="about:blank"></iframe>
<SCRIPT LANGUAGE="JavaScript">
<!--
function CopyTable()
{
CopyHtmlElement(oTable)
}
function CopyHtmlElement(obj)
{
gnMode = 'On'; // 将iframe变成可编辑模式,即HTML编辑器
e("<body></body>"); // 初始化编辑器
rHTML = rHTML;
teTextRange()ct(); // 选中编辑器内所有内容
Command("copy","",null); // 复制
}
function PastClipboardData()
{
s();
Command("paste","",null); // 粘贴
}
//-->
</SCRIPT>
这样子功能是实现了,不过觉得有点不爽,必须借助HTML编辑器才可,不过从全选HTML编辑器的代码中,注意到了createTextRange()方法,这个方法以前就有用过,只是一直没深入研究过。在Msdn中发现只有Body、TextArea等对象支持createTextRange()方法,继续在msdn中仔细查阅了一下,createTextRange()返回的是一个TextRange对象,继续查阅TextRange对象,发现其有很多方法,先试了试findText方法,发现只能选中文字,不能选中对象,继续找,终于发现了moveToElementText就是我们要找的方法:
<INPUT TYPE="button" value="选中测试表格" onclick="CopyTable()">
测试
<TABLE id="oTable">
<TR>
<TD>测试表格</TD>
<TD>测试表格</TD>
</TR>
<TR>
<TD>测试表格</TD>
<TD>测试表格</TD>
</TR>
</TABLE>文字
<SCRIPT LANGUAGE="JavaScript">
<!--
function CopyTable()
{
var txt = teTextRange();
ToElementText(oTable);
ct();
}
//-->
</SCRIPT>
类似于这样的问题,可以想想以前有无写过见过类似的'代码,如果没有也可以网上用关键字搜索一把,直接利用现有知识解决。msdn是一个非常好的宝库,就如国小学汉字的字典一样,从里面可以找到绝大部分所需要的资料。正应了那句话,自己动手丰衣足食:)
-
Java Class文件是什么
Class类是在Java语言中定义一个特定类的实现。一个类的定义包含成员变量,成员方法,还有这个类实现的接口,以及这个类的父类。Class类的对象用于表示当前运行的Java应用程序中的类和接口。比如:每个数组均属于一个Class类对象,所有具有相同元素类型和维数的数组共享...
-
java面试自我介绍范文
引导语:Java面试自我介绍应以突显自我能力为主,表现出与众不同的才干和学识。以下是本站小编分享给大家的2017java面试自我介绍范文,欢迎阅读!范文一我叫赵,我的同学更都喜欢称呼我的英文名字,叫,六月的意思,是君的谐音。我来自安徽的市,在21年我以市全市第一名的成绩...
-
java的nio的使用示例分享
在jdk1.4中提出的技术,非阻塞IO,采用的是基于事件处理方式。传统的io技术为阻塞的`,比如读一个文件,惹read方法是阻塞的,直到有数据读入。归纳为:1、javaio为阻塞,在打开一个io通道后,read将一直等待在端口一边读取字节内容,如果没有内容进来,read相当于阻塞掉了。2、在1...
-
Java 异步回调机制实例解析
回调,回调。要先有调用,才有调用者和被调用者之间的回调。下面小编给大家介绍Java异步回调机制实例解析,欢迎阅读!Java异步回调机制实例解析一、什么是回调软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用、回调和异步调用。回调是一种...