【问题标题】:Escaping/Unescaping html in javascript?在javascript中转义/取消转义html?
【发布时间】:2015-05-16 10:49:25
【问题描述】:

stackoverflow 上有很多关于从 js 中转义/取消转义 html 的问题已得到解答。但我发现很难理解,因为它不太适合我的上下文。我有一个变量“消息”,它有这个字符串:

message="<a href="www.google.com">Google</a>"

我正在使用“this.message”在 js 文件中显示此消息。而不是看到超链接的“Google”,我可以从字面上看到整个字符串:

<a href="www.google.com">Google</a>

如果我检查元素,我可以看到这个字符串正在被翻译成:

&lt;a href="www.google.com"&gt;Google;&lt;&gt

我如何获得超链接的谷歌?我必须逃避/逃避吗?如何?

显示消息的代码:

$.each(mdn.notifications || [], function() {
            $('<div class="notification">' + this.message + '</div>')[insertLocation.method](insertLocation.selector);
        });

【问题讨论】:

  • 在您的“消息”作业中,您在双引号内显示​​双引号。那是错字吗?还有,显示信息的代码是什么?
  • 糟糕。请以“消息”为例。在浏览器中检查元素
  • 这里有很多关于你的 JQuery 语法我不明白的地方,但你可以试试这个:var msg = $.parseHTML(this.message) 然后在你的 JQuery 函数中使用 msg。
  • 必须做类似的事情。抱歉问得不好。我会尝试使它更具可读性。

标签: javascript html django python-2.7


【解决方案1】:

在 django 模板中添加 html 格式,如下所示:

{% if messages %}notifications: [
                {% for message in messages %}{% if 'wiki_redirect' not in message.tags or waffle.flag('redirect_messages') %}{message: "<div class='my-message'>{{ message }}</div>", tags: "{{ message.tags }}", level: "{{ message|level_tag }}"}{% if not loop.last %},{% endif %}{% endif %}
                {% endfor %}
            ],
            {% else %}
            notifications: [],
            {% endif %}

或者您可以像这样在客户端 javascript 中添加 html 格式:

$.each(mdn.notifications || [], function() {
            // Make it so
            $('<div class="notification ' + this.level + ' ' + this.tags + '" data-level="' + this.level + '"><div class="my-message">' + this.message + '</div></div>')[insertLocation.method](insertLocation.selector);
        });

【讨论】:

  • 感谢您的回复!仍然得到相同的结果。在潜水标签内,有一个包含标签的纯文本。为什么在这种情况下将邮件标记为安全不起作用?
  • 即使使用了 mark_safe,html 也没有被转义?
  • @abhidoeslinux,在那种情况下我不确定,也许可以使用这样的“un-escaping”模板块:{{{ template }}}
猜你喜欢
  • 1970-01-01
  • 2010-10-27
  • 2010-10-14
  • 2021-07-30
  • 2015-05-31
  • 1970-01-01
  • 2010-11-08
  • 2014-02-22
相关资源
最近更新 更多