通過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非同步回撥機制例項解析一、什麼是回撥軟體模組之間總是存在著一定的介面,從呼叫方式上,可以把他們分為三類:同步呼叫、回撥和非同步呼叫。回撥是一種...