的JavaScript。如何防止html符号被<替换"等等

时间:2014-03-26 10:48:20

标签: javascript ajax

我的代码是

var button = document.createElement('a');
button.innerHTML = '<div class="some_class"><div>Download</div><div class="quality">'+ element[1] +' ('+ element[2] + 'ГБ)</div></div>';

我通过ajax加载这个脚本,我希望它能够执行。 但浏览器将其加载为:

button.innerHTML = '&lt;divclass=&quot;some_class&quot;&gt;&lt;div&gt;Download&lt;/div&gt;&lt;div class=&quot;quality&quot;&gt;'+ element[1] +' ('+ element[2] + 'ГБ)&lt;/div&gt;&lt;/div&gt;'

当然会导致语法错误。

如何解决?

编辑:如果我直接转到该页面http://myserver.com/script.js - 它可以正常运行。但是,如果我使用ajax加载它:

$.ajax({url: "http://myserver.com/script.js?url=" + 
location.href, dataType: "script"});

它被HTMLEncoded。

3 个答案:

答案 0 :(得分:1)

您需要找出应用此类转化的位置。它可能是服务器端或您的ajax库。我建议您在浏览器开发者工具中查看“网络”页面。在那里,你可以看到你从服务器那里得到的东西。

答案 1 :(得分:0)

尝试

 var replaceStrings = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
'"': '&quot;',
"'": '&#39;',
"/": '&#x2F;'


};

  function escapeHtmlCharacters(string) {
    return String(string).replace(/[&<>"'\/]/g, function (str) {
      return replaceStrings[str];
    });

}

或者只是

html.replace(/&/g, '&amp;')
                  .replace(/>/g, '&gt;')
                  .replace(/</g, '&lt;')
                  .replace(/"/g, '&quot;')
                  .replace(/'/g, '&apos;');

答案 2 :(得分:0)

解决。感谢所有人。

将.htmlsafe方法添加到Rails View。