【问题标题】:Escaping html / javascript: Appending content of db field into DOM with jQuery转义 html / javascript:使用 jQuery 将 db 字段的内容附加到 DOM
【发布时间】:2012-06-21 16:16:02
【问题描述】:

我想在 Rails 中执行以下操作。在我的数据库的文本字段中,有以下 html / javascript:

<script type="text/javascript">
  document.write('<div id="test"></div>');
</script>

我想把这个字段的内容追加到DOM的head-tag中,这样插入的js就会被执行。

在我的 rails erb-view 中,我有以下内容:

<script type="text/javascript">
  var code = "<%= @ticket.code %>"; // Content of codesnippet above
  $('head').append(code);
</script>

但是我得到了以下视图的渲染输出:

var code = "&lt;script type=&quot;text/javascript&quot;&gt;
  document.write('&lt;div id=&quot;test&quot;&gt;&lt;/div&gt;');
&lt;/script&gt;"; 

错误信息: 未终止的字符串文字

我尝试使用 gsub 换行符和其他转义方式,但我不知道,实际上什么是最好的转义方式。我怎样才能让它正确地转义并插入到 DOM 中?

感谢您的帮助!

【问题讨论】:

    标签: javascript jquery ruby-on-rails escaping


    【解决方案1】:

    我相信 rails 3 带有 JQuery,所以为什么不直接使用:

    $(document).onload(function()
    { 
        document.write('<div id="test"></div>');
    });
    

    我相信在 var 代码上你应该做以下事情:

    var code = "<%= escape_javascript(@ticket.code.html_safe) %>"
    

    【讨论】:

    • 使用 html_safe 会产生另一个问题: var code = "
      '); ";引号现在使变量声明结束得太早了。
  • @agieche 然后试试var code = "&lt;%= escape_javascript(@ticket.code.html_safe) %&gt;"
  • 是的,这很顺利。谢谢!请编辑您的答案,以便我将其标记为正确。
  • 猜你喜欢
    • 2016-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-26
    • 2011-11-11
    • 2016-08-11
    相关资源
    最近更新 更多