一旦[]被<替换为空白的文本>

时间:2012-07-23 21:45:56

标签: javascript jquery

我有以下代码

    $(document).ready(function () {
        $(".page").on('click', function () {
            $("#ctl00_MainContent_dfComments").html(function (i, val) {
                return val.replace(/\]/g, '>');
            });
        });

        $(".page").on('click', function () {
            $("#ctl00_MainContent_dfComments").text(function (i, val) {
                return val.replace(/\[/g, "<");
            });
        });

    });

replacing characters in entire document JQuery的帮助下,这非常有效。但是,当&lt;插入支架,整个div变为空白。我可以替换[有任何东西,但是一旦我放入&lt; div里面的一切都消失了。知道可能会发生什么吗?

是的,这应该创建一个粗体(有点像bb解析器)

4 个答案:

答案 0 :(得分:2)

您的第二次替换是使用.text()而不是.html()。作为旁注,您还可以组合两个事件处理程序。

$(document).ready(function () {
  $(".page").on('click', function () {
    $("#ctl00_MainContent_dfComments").html(function (i, val) {
      return val.replace(/\]/g, '>').replace(/\[/g, '<');
    });
  });
});​

这里有效:http://jsfiddle.net/pbnDP/8/

按下按钮使文本变为粗体。

主要职位的评论中讨论了明显的安全问题。不要将其放在用户可以生成正在运行的内容的网站上。

答案 1 :(得分:1)

看起来您可能没有最终使用Valid HTML和DOM渲染,html会为您处理任何无效的HTML。

你的脚本存在一些问题 - 首先它会宣传危险的html,你似乎没有对代码进行任何形式的理智或黑名单/白名单检查。

另一个问题是您手动命名ASP.NET ID - 这很糟糕,因为它们可以更改。请改用.ClientID。

答案 2 :(得分:1)

       $(".page").on('click', function () {
        $("#ctl00_MainContent_dfComments").html(function (i, val) {
            return val.replace(/\[/g, "<");
        });
    });

.html可能比文本效果更好,并且还使用类名或clientid来选择与他在答案中建议的类似的元素,这不好猜测浏览器将id更改为什么。

答案 3 :(得分:0)

请再次检查您的DOM,看起来浏览器会将< >检测为html标记或html aint有效。

工作版本: http://jsfiddle.net/pbnDP/

我知道在包括Ruby在内的少数编程世界中,你可能想要使用名为html_safe的东西。

希望它有所帮助。