[英]Prettify.JS does not display HTML script tags properly
我正在使用Prettify.JS在正在开发的网站上显示一些代码。 我似乎在脚本标签上遇到了一些问题,尤其是“非链接”标签:
<pre>
// Link CSS
<link rel="stylesheet" href="device.css" />
// Link JQuery
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
// Link DeviceJS
<script type="text/javascript" src="device.min.js"></script>
// Initialize DeviceJS
<script>
$(document).ready(function () {
$('selector').devicejs(options);
});
</script>
</pre>
此代码显示以下内容(注意,整个脚本标记为红色):
但是,当我在下面进行此操作时(在关闭打开的脚本标记之前添加一些不可见的html):
<pre>
// Link CSS
<link rel="stylesheet" href="device.css" />
// Link JQuery
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
// Link DeviceJS
<script type="text/javascript" src="device.min.js"></script>
// Initialize DeviceJS
<script<span style="display:none;"> t</span>>
$(document).ready(function () {
$('selector').devicejs(options);
});
</script>
</pre>
似乎显示确定:
问题是当我添加多个非链接脚本标签块时,问题再次出现。 所以下面的代码:
<pre>
// Link CSS
<link rel="stylesheet" href="device.css" />
// Link JQuery
<script type="text/javascript" src="jquery-1.7.1.min.js"></script>
// Link DeviceJS
<script type="text/javascript" src="device.min.js"></script>
// Initialize DeviceJS
<script<span style="display:none;"> t</span>>
$(document).ready(function () {
$('selector').devicejs(options);
});
</script>
<script<span style="display:none;"> t</span>>
$(document).ready(function () {
$('selector').devicejs(options);
});
</script>
</pre>
显示为:
我查看了Prettify.JS源代码,并在1211行中看到了以下内容:
['lang-js', /^<script\b[^>]*>([\s\S]*?)(<\/script\b[^>]*>)/i],
我相信这是词法分析器的一部分。
我不是Regex Ninja,所以我希望对如何进行调整有所帮助,以便Prettify.JS可以容纳没有属性的非链接脚本标签。
提前致谢。
一个HTML示例显示此功能很好,所以我怀疑您的问题与是否无法将内容识别为HTML有关,因此使用了错误的语言处理程序。 没有看到您如何调用美化,这很难说。
我查看了Prettify.JS源代码,并在1211行中看到了以下内容:
['lang-js', /^<script\\b[^>]*>([\\s\\S]*?)(<\\/script\\b[^>]*>)/i],
我相信这是词法分析器的一部分。
你是对的。 这就是说脚本元素以
<script\b[^>]*>
或文本<script
(不区分大小写,由于末尾是/i
),后跟一个分词符和任意数量的非>
字符,后跟一个>
然后
([\s\S]*?)
非贪婪地匹配close标签之前所需的最少字符数。 这是在捕获组1中的,因此将使用类型提示lang-js
递归地美化此内容。
最后
(<\/script\b[^>]*>)
与open标签类似,但是是close标签。 它可能不应该在捕获组中,但是那不应该影响正确性。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.