【问题标题】:How to get selection HTML and selection parent?如何获取选择 HTML 和选择父项?
【发布时间】:2010-10-25 03:21:11
【问题描述】:

几年前,我将"smart quoting" 添加到了一个网络论坛。基本上,用户在之前的对话中选择一个部分并单击一个按钮来引用它。脚本获取引用的 HTML 并爬上 DOM 树以找出是谁说的。

我只能为 IE 做,虽然我记得很努力。但是那时没有 stackoverflow.com,Firefox 也没有那么成熟。我猜到现在,在 Firefox 中做这件事也很容易。这是代码的关键部分。

range2Copy = frameDoc.selection.createRange(); 
html2Copy = range2Copy.htmlText; 

el = range2Copy.parentElement();

// go up the HTML tree until post row node (id=postrowNNNN)

while (el.nodeName != 'BODY' &&
        !el.id.match(/postrow/)) {

    el = el.parentNode;
}

元素 frameDoc 包含用户选择文本的前一个线程。如果它太没有意义,请参阅整个代码here。它是 FCKeditor 的插件。

【问题讨论】:

  • 看来您已经有了一个工作代码。我不明白你遇到的问题

标签: javascript dom


【解决方案1】:

好的,我尝试在 Firefox 中运行您的代码,但没有成功,这是修改后的版本:

var selection = window.getSelection(); 
var node = selection.anchorNode;

while (node.nodeName != 'BODY' && !node.id.match(/postrow/)){
    node = node.parentNode;
}

【讨论】:

  • 谢谢,纳迪亚。在阅读了您最近对this question 的回答后,我实际上记得我的那个未解决的问题。我的主要问题是在 createRange/htmlText 中,这是仅限 IE 的技术。
  • 是的,这方面的文档位于developer.mozilla.org/en/nsISelection
  • 你是说Mozilla现在支持htmlText方法吗?它不在上面链接的文档中。
猜你喜欢
  • 2017-07-27
  • 2022-07-16
  • 1970-01-01
  • 2020-05-26
  • 2014-12-25
  • 1970-01-01
  • 2021-10-29
  • 1970-01-01
  • 2019-10-15
相关资源
最近更新 更多