0

我有以下代码

    $(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, "<");
            });
        });

    });

在整个文档 JQuery 中替换字符的帮助下工作得非常好。但是,当插入 < 括号时,整个 div 变为空白。我可以用任何东西替换 [ ,但是只要我输入 < ,该 div 中的所有内容都会消失。知道会发生什么吗?

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

4

4 回答 4

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/

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

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

于 2012-07-23T22:03:59.757 回答
1

看起来您可能没有以有效的 HTML 结束,并且呈现 html 的 DOM 正在为您处理任何无效的 HTML。

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

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

于 2012-07-23T21:49:11.300 回答
1
       $(".page").on('click', function () {
        $("#ctl00_MainContent_dfComments").html(function (i, val) {
            return val.replace(/\[/g, "<");
        });
    });

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

于 2012-07-23T21:49:23.567 回答
0

请再次检查您的 DOM,似乎浏览器检测到< >as html 标记或 html 无效。

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

我确实知道在包括 Ruby 在内的少数编程世界中,有一些东西叫做html_safe你可能想要与它一起使用。

希望能帮助到你。

于 2012-07-23T21:52:19.160 回答