从非转义的<代码元素中检索文本和>使用JQuery

时间:2015-11-17 17:55:09

标签: javascript jquery

我想在html网站上显示Java源代码。

当我逃脱所有>和<在将代码粘贴到html之前,它显然有效,一切都正确显示。

当我不这样做时,HashMap会显示如下:

HashMapclass="string">"">> map = new HashMap<>();

应该是

HashMap<String, ArrayList<String>> map = new HashMap<>();

当我使用JQuery的text()方法并将结果打印到控制台时,我得到了这个:

HashMap> map = new HashMap<>();

当我使用html()方法时,我得到了这个:

HashMap<string, arraylist<string="">&gt; map = new HashMap&lt;&gt;();

我应该如何从代码元素中检索文本,以便我可以正确地转义&gt;和

使用XML源代码做同样的事情。我用

$(this).html()

获取代码中的文本 - 元素然后转义字符。然后,XML将显示标签而不仅仅是文本。

1 个答案:

答案 0 :(得分:1)

如果您在html中插入如下行:

<code id="okai">HashMap<String, ArrayList<String>> map = new HashMap<>();</code>

您必须了解HTML会将"<String"视为新标记的开头,并且由于没有相应的结束标记(即:</String>),html代码将呈现在:

HashMap> map = new HashMap<>();

如果你看一下开发工具(在Chrome中按F12),你会理解我的意图:在代码标签中你现在有两个标签:一个字符串和另一个错误的标签。

如果您在脚本中编写</script>标记,则会出现同样的问题(请参阅:http://stackoverflow.com/questions/236073/why-split-the-script-tag-when-writing-it-with-document-write)。

所以没有必要继续使用text或html jquery函数,因为htt解释器刚改变了imput html。

要在html页面中插入java源代码,我更喜欢这样的方式:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="jquery-ui.css">
    <script src="jquery-1.11.2.js"></script>
    <script src="jquery-ui.js"></script>
    <script type="application/javascript">
        $(function() {
            var newTxt = $('#myCodeId').html().replace('<!--', '').replace('-->', '');
            $('#myCodeId').text(newTxt);
        });
    </script>
</head>
<body>
<code id="myCodeId"><!--HashMap<String, ArrayList<String>> map = new HashMap<>();--></code>
</body>
</html>