2015-03-13 4 views
0

Есть много ответов на вопросы о stackoverflow об escaping/unescaping html из js. Но мне трудно понять, потому что это не соответствует моему контексту. У меня есть «сообщение» переменная, которая имеет эту строку:Escaping/Unescaping html в javascript?

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

Я отображающее это сообщение в файле JS с помощью «this.message». Вместо того, чтобы видеть гиперссылкой «Google», я могу буквально видеть всю строку:

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

Если я осмотреть элемент, я могу видеть, что эта строка переводится на:

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

Как я получить гиперссылку Google? Мне нужно бежать/unescape? Как?

код для отображения сообщений:

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

В вашем задании «сообщение» вы показываете двойные кавычки в двойных кавычках. Это опечатка? Кроме того, что такое код для отображения сообщения? – HeadCode

+0

К сожалению. Пожалуйста, рассмотрите «сообщения» как пример. В браузере проверить элемент <отображается как < Я просто хочу предотвратить это, чтобы мой html получился правильно обработанным. Также проверьте отредактированный вопрос. – abhidoeslinux

+0

Здесь я не понимаю вашего синтаксиса JQuery, но вы можете попробовать это: var msg = $ .parseHTML (this.message), а затем использовать msg в вашей функции JQuery. – HeadCode

ответ

0

Добавить HTML форматирование в шаблоне Django, как это:

{% 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 %} 

Или вы можете добавить HTML форматирование в Клиентский JavaScript, как это:

$.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); 
     }); 
+0

Спасибо за ваш ответ! По-прежнему получается тот же результат. внутри тега погружения есть обычный текст, содержащий теги. Почему маркировка сообщения не работает в этом случае? – abhidoeslinux

+0

html не ускользает, даже если используется mark_safe? – abhidoeslinux

+0

Nikos M: отредактированный вопрос – abhidoeslinux