-1

我有一个(白)标签列表,我将允许在标签之外code作为 html 。对于在<code>标签中编写的任何 html,我想在 javascript 中使用正则表达式将 < 和 > 字符替换为 < &62;

所以<b>符号应该被替换<code><b>bold</b></code>,而不是<code>标签本身——它们应该保留为 html。

我不想允许块<script>之外的标签<code>,所以我的白名单中不会有“脚本”。如果脚本标签在代码标签内,则应该进行 ascii 替换。

这与 RTE 在 stackoverflow 上的工作方式非常相似。

我需要使用 javascript + regex 在所有客户端执行此操作。任何帮助将非常感激。

谢谢

4

1 回答 1

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, "&#60;").replace(/>/g, "&#62;");
    }
}
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, "&#60;").replace(/>/g, "&#62;");
    }
于 2013-06-11T19:50:51.587 回答