我有一个(白色)标签列表,我将允许其作为code
标签的html 。对于<code>
标签内的任何html,我想在javascript中使用正则表达式来替换&lt;和&gt;带有&amp;#60的字符;和&amp; 62;
因此<b>
符号应该在<code><b>bold</b></code>
内替换,而不是<code>
代码本身 - 它们应该保留为html。
我不想在<script>
块之外允许<code>
标记,因此我的白名单中不会有'script'。如果脚本标记位于代码标记内,则应执行ascii替换。
这与RTE在stackoverflow上的工作方式非常相似。
我需要使用javascript + regex在所有客户端执行此操作。任何帮助将不胜感激。
由于
答案 0 :(得分:1)
基本上你可以做这样的事情
function changeCode() {
var codeTags = document.getElementsByTagName('code');
for(var i = 0; i < codeTags.length; i++) {
var current = codeTags[i];
current.innerHTML = current.innerHTML.replace(/</g, "<").replace(/>/g, ">");
}
}
window.onload = changeCode; //executes after the DOM is ready
但它需要做一些工作,它只是通过简单的正则表达式更改转义<code>
字符的<,>
标记的HTML。无论如何,你应该添加类似公共类或名称的东西,以便循环只能在你想要的代码标签上执行该函数。
for(var i = 0; i < codeTags.length; i++) {
var current = codeTags[i];
if (current.className.indexOf('someclass') !== -1 || current.name !== 'somename') continue;
current.innerHTML = current.innerHTML.replace(/</g, "<").replace(/>/g, ">");
}