利用js在瀏覽器中定位節點並且高亮顯示節點間的內容

2021-04-13 22:17:26 字數 1997 閱讀 6213

最近開發的乙個專案需要用js在瀏覽器中實現對介面上某一標籤內的內容進行高亮反選,簡單說就是類似於拖拽滑鼠選中某段文字的那種反選效果。當然內容不是隨便選中的,而是選擇了被某種標籤所包含的文字。

開始的時候沒有一點頭緒,找了很多資料、做個很多實驗~終於找到了在ie和ff下都能過通過的方法。

其實反選的話,主要是要確定你要選取的範圍,然後呼叫不同瀏覽器下支援的反選方法(其實當時主要耗費在找 這些方法上了)。

就我做的專案來說,首先是找要到那個包含待選文字的節點的range。然後再進行游標選中.

例如以下**:

這是一段測試用的文字

1.dom相容的瀏覽器(比如ff)中實現方法:

//dom level 2中定義了方法creatrange()來建立範圍,這個方法屬於document物件

varorange 

=document.createrange();

//得到節點,當然也可以用getelementsbyname等方法獲得節點

varonode 

=document.getelementbyid(

"id1");

//這個方法可以選擇使用範圍的文件,還有個selectnodecontent()方法,這個後面解釋下。這裡的方法接收乙個dom節點作為引數,用節點中的資訊來填充範圍

orange.selectnode(onode);

//建立要被選中的區域

var

selection 

=window.getselection() ;

if(selection.rangecount 

>0) 

selection.removeallranges();

//將要被選中的節點放入選區中才可以實現反選效果

selection.addrange(range);

//這個得到焦點最好放上去,因為在ff下游標總是容易失焦

window.focus();

2.在ie下實現方法:

在ie下處理range的方法並不標準,ie中稱這個range為文字範圍-text range,它主要用來處理文字(並不是dom節點),因此建立範圍,要呼叫、、或者上的createtextrange()來建立range。

varorange 

=document.body.createtextrange();

varonode 

=document.getelementbyid(「id1」);

//與dom眾的selectnode()相似,可以接受dom元素作為引數,並選取原色的所有文字,包括html標籤

orange.movetoelementtext(onode);

//ie下方便多了,乙個select()就可以實現游標反選了!

orange.select();

以上就是在兩種瀏覽器下用js實現節點內文字內容的高亮選取。

快下班了~關於在dom下selectnode和selectnodecontent方法的區。舉個例子就一目了然了,

對於下面的**:

helloworld

這段**用js訪問:

varorange1 

=document.createrange();

varorange2 

=document.creaternage();

varop1 

=document.getelementbyid(

"id1");

orange1.selectnode(op1);

orange2.selectnodecontents(op1);

selectnode()方法將選擇整個節點,包括它的子節點。而selectnodecontent()則選擇節點所有的子節點。

selectnode()獲取到的orange1是helloworld

selectnodecontent()獲取到的orange2是helloworld

關於複雜的節點擊取最近正在學習,等有時間把學到的經驗發上來。

利用js實現 禁用瀏覽器後退

現在很多的內部系統,一些介面,都是使用者手動點選退出按鈕的。但是為了避免,使用者誤操作 點選瀏覽器後退,或者用滑鼠手勢後退什麼的。容易出現誤操作。所以在有些頁面上,適當的禁用瀏覽器的後退,是可以提高很大的使用者體驗。在網上查,可以查到很多js禁用後退的材料。用的多的方法如下 1 回退後,產生乙個前進...

利用js實現 禁用瀏覽器後退

現在很多的內部系統,一些介面,都是使用者手動點選退出按鈕的。但是為了避免,使用者誤操作 點選瀏覽器後退,或者用滑鼠手勢後退什麼的。容易出現誤操作。所以在有些頁面上,適當的禁用瀏覽器的後退,是可以提高很大的使用者體驗。在網上查,可以查到很多js禁用後退的材料。這種方式,不算是乙個滿意的解決方式。因為使...

利用js來判斷瀏覽器型別 ie,firefox

現在網路上的瀏覽器,作業系統就象中國的方言一樣,那個叫多啊 這給我們這些開發人員 帶來了巨大的痛苦 雖然可能大家的喜好不同 用的系統也不同 有人喜歡用ie,有人喜歡用 那麼的幾種 ie核心,netscape核心 怎麼樣用js來判斷各種瀏覽器的型別呢 在不同的瀏覽器中對js的支援程度,語法要求都不大一...