【发布时间】:2012-11-10 17:08:29
【问题描述】:
我正在使用 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>
似乎显示OK:
问题是当我添加多个非链接脚本标签块时,问题又出现了。所以下面的代码:
<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 可以容纳没有属性的非链接脚本标签,我将不胜感激。
提前致谢。
【问题讨论】:
-
你如何美化这个?通常
<pre>标签上必须有class="prettyprint",而这些没有。你在使用程序化 API 吗?如果有,用什么语言提示? -
是的,我已经有了那套。抱歉,为了清楚起见,我应该添加它
标签: javascript regex prettify