簡體   English   中英

如何使用復制/克隆在實時DOM中找到文本節點?

[英]How can I find a text node in the live DOM using its copy/clone?

我已經從頁面中復制了一些文本節點(即實時DOM),並將其存儲在數組中。 是否可以在實時DOM中再次找到那些確切的節點? 我將需要使用普通的JavaScript。

這基本上就是我的項目的工作方式:

  • 配置對象指定頁面的具有文本內容的部分(使用CSS選擇器),並可選地指定該部分中的子區域(也使用CSS選擇器)中應忽略文本內容的部分。 我分別使用的屬性名稱是selectexclude
  • 使用Sizzle (jQuery的選擇器引擎),我為每個select器生成一個元素集合,然后將其克隆。
  • 然后,我對select集合運行exclude選擇器,找到所有匹配的元素,並將它們從select集合中刪除。
  • 使用帶有刪除的exclude部分的select集合,遍歷它以構建僅包含文本節點的數組。
  • 我使用此文本節點數組根據原始文本內容中可能提供的術語列表進行一些單詞匹配。 為此,我構建了一個對象數組,其中包括屬性,例如在其中找到術語的文本節點,以及該術語在文本節點的data出現的位置/偏移量。

給定后一個數組,我需要能夠將在其中找到匹配術語的克隆文本節點與從中克隆出它們的原始文本節點進行匹配。 如果可以這樣做,我可以遍歷對象數組,首先找到與實時DOM相對應的文本節點(最初從中復制該文本節點),然后將該術語鏈接到我記錄的位置/偏移處在對象中。

希望這是有道理的-如果沒有請告訴我,我可以提供更多詳細信息。 這必須是確定性的-即,我不能只在實時DOM中搜索具有相同data的文本節點,因為這可能導致誤報。

同樣,我必須在這里使用普通的JavaScript,而不是jQuery或任何其他庫。

感謝您的幫助!

一般來說,您不能。 克隆后,新克隆與舊節點具有不同的身份。 沒有通用方法可以將節點綁定到從其克隆的節點。

如果您知道最頂層的克隆祖先節點以及從中克隆的節點,那么您自然可以使用其父childNode列表中每個祖先的索引從最頂層祖先到特定節點……但是僅假設自克隆以來兩個DOM都沒有發生突變。

否則,您將遭受一些駭人聽聞的駭客攻擊,例如克隆后立即遍歷克隆的整個DOM,向每個節點寫入一個expando屬性以引用源節點。

我不確定為什么要克隆所有節點。 在您描述的過程中,您肯定可以將實時文檔節點存儲在列表中,而無需進行任何克隆?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM