国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JS Range HTML文檔/文字內容選中、庫及應用介紹

2019-11-20 23:49:20
字體:
來源:轉載
供稿:網友
一、前面的些話
本文的內容基本上是基于“區域范圍對象(Range objects)”這個概念來說的。這個玩意,可以讓你選擇HTML文檔的任意部分,并可以拿這些選擇的信息做你想做的事情。其中,最常見的Range是用戶用鼠標選擇的內容(user selection)。

本文有不少篇幅就是講如何將用戶的這種選擇轉換為W3C Range或Microsoft Text Range對象。

二、什么是Range?
所謂"Range",是指HTML文檔中任意一段內容。一個Range的起始點和結束點位置任意,甚至起始點和結束點可以是一樣的(也就是空Range)。最常見的Range是用戶文本選擇范圍(user text selection)。當用戶選擇了頁面上的某一段文字后,你就可以把這個選擇轉為Range。當然,你也可以直接用程序定義Range。

例如下面這個模樣的例子:

2011-04-12 負責調查切爾諾貝利核事故對人與環境造成影響的俄科學家亞布羅科夫博士指出,因福島核電站使用的燃料較切爾諾貝利核電站多,且有反應堆使用了含有高毒性的钚的燃料,因此"福島核電站事故可能會比切爾諾貝利帶來更嚴重的后果"。

上面選中狀態的那些文字就可以轉換成Range對象(下面會詳細講述)。通過Range對象你可以找到Range的起始點和結束點,如果你實在有心,還可以刪除或是復制這些內容,或是用其他文字替換,甚至是簡單的HTML。

上面的例子可以說是最簡單的Range對象的例子,因為其只包含了文字。而實際上,Range對象也是可以包含HTML代碼內容的,例如下面這個示例:

<time>2011-04-12</time> <p>據日本廣播協會電視臺12日報道,日本經濟產業省原子能安全保安院決定將福島第一核電站核泄漏事故等級提高至7級。這使日本核泄漏事故等級與蘇聯切爾諾貝利核電站核泄漏事故等級相同。</p> <p>負責調查切爾諾貝利核事故對人與環境造成影響的俄科學家亞布羅科夫博士指出,因福島核電站使用的燃料較切爾諾貝利核電站多,且有反應堆使用了含有高毒性的钚的燃料,因此"福島核電站事故可能會比切爾諾貝利帶來更嚴重的后果"。</p>

同樣的,Range對象被創建,且包含HTML,現在的問題是選擇的內容正好跨過了楚河和漢界(跨標簽),如果就單純的論選擇的內容的話,應該如下:

泄漏事故等級與蘇聯切爾諾貝利核電站核泄漏事故等級相同。</p> <p>負責調查切爾諾貝

顯然,上面的HTML屬于1級殘廢,基本無效。然而幸運的是,所有的瀏覽器都會自動調整HTML片段使其有效,就像變成下面這樣:

<p>泄漏事故等級與蘇聯切爾諾貝利核電站核泄漏事故等級相同。</p> <p>負責調查切爾諾貝</p>

可以看到,瀏覽器自動補全了一定數目的HTML來讓Range有效。如果你復制或是移動Range,你所復制或移動的HTML內容一定是有效的。

三、瀏覽器的兼容性

在真正操刀JavaScript之前我們需要大致知道Range對象的瀏覽器兼容性情況。實際上,問題是比較麻煩的,因為至少有3種類似Range對象,且你有必要全部理解。先展示詳細的兼容性情況表:

支持:支持不支持:不支持部分支持:部分支持

1. W3C Range
W3C Range
 Explorer 6/7Firefox 2Safari 1.3Opera 9
cloneContents()不支持支持部分支持支持
cloneRange()不支持支持支持支持
collapse()tbdtbdtbdtbd
collapsed不支持支持支持支持
commonAncestorContainer不支持支持支持支持
compareBoundaryPoints()不支持支持支持支持
comparePoint() 主站蜘蛛池模板: 安仁县| 闵行区| 昌黎县| 格尔木市| 平利县| 古浪县| 静宁县| 泰和县| 德江县| 静海县| 淮安市| 武隆县| 噶尔县| 临夏县| 文安县| 抚顺县| 大宁县| 南投市| 敦化市| 英吉沙县| 霍邱县| 新河县| 鹤峰县| 和顺县| 南召县| 平利县| 桑日县| 浦城县| 凤台县| 新干县| 繁昌县| 九台市| 樟树市| 邵阳县| 常德市| 新民市| 灵宝市| 临漳县| 龙井市| 岱山县| 咸丰县|