在Javascript中,我可以在标记杂乱的文本上获得精确的坐标吗(到处都是childNodes?)

在Javascript中,我可以在标记杂乱的文本上获得精确的坐标吗(到处都是childNodes?),javascript,dom,text,Javascript,Dom,Text,请参见下面的示例:它显示了表格中的文本行(这有很好的理由,但这不是问题所在) 基本上,我所需要的只是一个函数,当我点击链接时,它会提醒()我文本选择的完美坐标。所谓完美坐标,我的意思是:选择开始的行号,选择结束的行号(这两个都很简单,我只使用id中的数字,选择开始的偏移量,选择结束的偏移量) 所以,如果我选择 第一行,它包含文本 这是第二次 我收到一个警告,上面写着: 选择从第1行偏移量12开始 选择在第2行偏移18处结束 如果文本是纯文本,、和标记随处可见,而且每个标记都是新的子节点,那么使用

请参见下面的示例:它显示了表格中的文本行(这有很好的理由,但这不是问题所在)

基本上,我所需要的只是一个函数,当我点击链接时,它会提醒()我文本选择的完美坐标。所谓完美坐标,我的意思是:选择开始的行号,选择结束的行号(这两个都很简单,我只使用
id中的数字,选择开始的偏移量,选择结束的偏移量)

所以,如果我选择

第一行,它包含文本
这是第二次

我收到一个警告,上面写着:

选择从第1行偏移量12开始
选择在第2行偏移18处结束

如果文本是纯文本,
标记随处可见,而且每个标记都是新的子节点,那么使用getRange()(我不需要与Internet Explorer兼容,因此适用于FireFox、Chrome和Safari的getRange()就可以了)这将非常简单

我还没有找到一种忽略标记的方法。似乎没有简单的方法可以做到这一点。但我不是Javascript专家,也许有一个技巧可以忽略文本中的标记(或者让函数看起来好像忽略了标记)




这是第一行,它包含文本


这是第二行,它包含文本


这是第三行,它包含文本


这是第四行,它包含文本


这是第五行,它包含文本

有人能帮我写我的magicCode()吗


谢谢!

您可以使用
.textContent
属性只获取文本值,而不使用HTML。您可以通过检查
.innerText
并使用它(如果存在),轻松地使其在所有浏览器中工作,否则使用
。textContent
innerText
在IE中工作,而
textContent
工作在Firefox/Chrome等浏览器中

下面是一个例子:

 var content = document.getElementById('content1');
 if(content.innerText){
   alert(content.innerText);
 }else{
   alert(content.textContent);
 }

您可能希望研究如何使用canvas标记生成文本;对于您的项目来说,这可能有点复杂和过分

Bespin是一个完全使用canvas标记创建的代码编辑器。我还没有查看源代码,所以我无法告诉您他们是如何渲染文本和模拟文本选择的