7

我需要用 JS 提取一个与位置相关的 HTML 子字符串。我存储 HTML 编码的特殊字符。

例如:

HTML

<div id="test"><p>l&ouml;sen &amp; gr&uuml;&szlig;en</p></div>​

文本

lösen & grüßen

我的问题在于 JS 部分,例如,当我尝试提取片段时 ,片段的起始位置3和结束位置9<div>块内。JS 似乎在内部转换了一些特殊字符,因此从3to的计数9被错误地解释为“ lösen”而不是“ l&ouml;”。其他特殊字符(如&amp;)不受此影响。

所以我的问题是,如果有人知道为什么 JS 会那样做?喜欢&auml;&ouml;正在转换的字符,而喜欢&amp;或的字符&nbsp;是普通的。有没有可能避免这种转换?

我设置了一个小提琴来证明这一点:JSFiddle

谢谢你的帮助!

编辑:

也许我解释得有点混乱,对此感到抱歉。我想要的是 HTML:

<p>l&ouml;sen &amp; gr&uuml;&szlig;en</p>.

除了 HTML-Tags,每个特殊字符都应该不被转换。就像上面的 HTML 一样。

但是 JS 将&ouml;or自动转换&uuml;öor ü,这是我需要避免的。

4

2 回答 2

2

这是因为浏览器(而不是 JavaScript)将不需要在 HTML 中转义的实体转换为它们各自的 Unicode 字符(例如,它会跳过&amp;&lt;&gt;

因此,当您检查.innerHTML时,它不再包含原始页面源中的确切内容;您可以逆转此过程,但它涉及字符<->实体对的完整映射,这是不切实际的。

于 2012-11-23T17:02:29.500 回答
0

如果我理解正确,请尝试在目标元素上对 jQuery 使用 innerHTML 或 .html('your html code')

于 2012-11-23T16:51:28.910 回答