Kyl*_*yan 1 javascript asp.net annotations
对于Internet Explorer和Firefox,我想在ASP.NET页面中执行以下操作:
1和2都没问题.但对于3和4 ......这可能吗?如果是这样,我该怎么办呢?
如果对HTML文档无法做到这一点,纯文本怎么样?(对于HTML,我们可以假设它相对简单.例如,我设想这个支持word文档保存为HTML.)
那你有问题.
假设这个文字:
Hello my
name is
Josh and
this is an
example for you
Run Code Online (Sandbox Code Playgroud)
下面是这样的:
<span>
Hello my
<span>
name is<br/>
Josh and
</span>
<span>
this is an<br/>
example for you
</span>
</span>
Run Code Online (Sandbox Code Playgroud)
然后假设我选择:
Josh and
this is an
Run Code Online (Sandbox Code Playgroud)
我选择的HTML是:
Josh and
</span>
<span>
this is an
Run Code Online (Sandbox Code Playgroud)
因此,如果你绕过它,你最终会得到一些搞砸的HTML.
所以,我建议如下:
你最终得到这个:
function getSelectedTextNoHtml() {
return getSelectedText().replace(/(<([^>]+)>)/ig, "");
}
function getSelectedText() {
if (window.getSelection)
return window.getSelection();
else if (document.getSelection)
return document.getSelection();
else if (document.selection)
return document.selection.createRange().text;
return "";
}
Run Code Online (Sandbox Code Playgroud)
然后,您可以获取整个文档的HTML,剥离HTML标记并在文档的文本版本中查找所选文本的索引.
我甚至可以想到(丑陋但可行)的方法来获取HTML中的选择索引.但我警告你,如果你想要他们,他们就是丑陋的.
有甚至很丑陋的方式来获得一个跨度整齐地围绕你想要的唯一ID选定的文本.当然,总有办法做点什么.一切都只是一个算法.但这将涉及一个美好的日子工作磨练它!
我发布的很多,如果你想让我详细说明,请问!
更新:
好的,你问过它:)
如果你想在没有文字闪烁和改变的情况下谨慎地做到这一点,你可以尝试利用HTML零宽度空间:
​
Run Code Online (Sandbox Code Playgroud)
坚持在它前面100次,找到100个零宽度空间的索引!
当然,如果他们的文档在其他地方有100个零宽度空格和所选文本,它将失败,但此时我说"让它失败":)
Howzat?