糯米文學吧

位置:首頁 > 計算機 > java語言

通過java script腳本複製網頁上的一個表格

java語言2.85W

今天有人問我一個問題:如何通過js腳本複製網頁上的一個表格?看起來似乎比較有難度,不過還是搞定了,順便把解決這個問題的過程記錄下來,希望能對寫腳本的兄弟們有所幫助。

通過java script腳本複製網頁上的一個表格

以前沒有寫過這種腳本,不過想起來前不久剛看到一個腳本可以實現全選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是一個非常好的寶庫,就如國小學漢字的字典一樣,從裏面可以找到絕大部分所需要的資料。正應了那句話,自己動手豐衣足食:)