如何对可能有HTML标记的文本进行HTML编码,而不使用Javascript对标记本身进行编码

如何对可能有HTML标记的文本进行HTML编码,而不使用Javascript对标记本身进行编码,javascript,innerhtml,html-encode,Javascript,Innerhtml,Html Encode,基本上,我有一些文本可能包含HTML标记,但也可能包含非HTML编码的字符 var doc = window.document.implementation.createDocument ('http://www.w3.org/1999/xhtml', 'html', null); var text = '<head><script>somejs</script>' + '<script>var x = 7; var y =

基本上,我有一些文本可能包含HTML标记,但也可能包含非HTML编码的字符

var doc = window.document.implementation.createDocument
    ('http://www.w3.org/1999/xhtml', 'html',  null);
var text = '<head><script>somejs</script>' +
      '<script>var x = 7; var y = 5; var foo = x < y;</script>' +
      '</head><body></body>');
这会导致无效的\u状态\u错误:DOM异常11,因为x和y之间的小于号

但是,如果我对得到的变量文本进行htmlEncode

&lt;head&gt;&lt;script&gt;somejs&lt;/script&gt;&lt;script&gt;var x = 7; var y = 5; var     foo = x &lt; y;&lt;/script&gt;&lt;/head&gt;&lt;body&gt;&lt;/body&gt;
因此,一旦设置了元素的innerHTML,我就丢失了元素按预期运行所需的所有标记。是否有任何标准方法可以对字符串中所有标记的内容进行HTML编码,而无需对标记本身进行编码?

用于内联脚本

因此,您可以使用
,而不是
。这项工作:

var text = '<head><script>somejs<\/script><script>var x = 7; var y = 5; var foo = x < y;<\/script></head><body></body>';
el.innerHTML = text;
var text='somejsvar x=7;变量y=5;var foo=x

更新:现在您已经编辑了您的问题,我看到您正在使用XHTML!这就解释了-
innerHTML
在XHTML中不起作用。

我编辑了我的问题,以显示我的实际用例,很抱歉,一开始我不太清楚。对我来说,在上述情况下,即使我使用了正斜杠,我仍然会得到无效的状态错误。但是,如果我将“x啊,我的坏:/I有点傻。我真的不在乎我用哪一个。我所希望的就是以后能够调用var scripts=doc.getElementsByTagName('script'),然后能够通过执行脚本[0]来获取'somejs';有什么办法可以让这一切顺利吗?基本上,我只想从变量文本中提取一对and标记之间的所有javascript代码。使用
escape
unescape
获得结果。不幸的是,这会转义整个字符串,因此如果我想执行doc.getElementsByTagName('script')之类的操作我将什么也得不到,因为构成脚本标记的<和>已被转义。
var text = '<head><script>somejs<\/script><script>var x = 7; var y = 5; var foo = x < y;<\/script></head><body></body>';
el.innerHTML = text;