我的代码是
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 = '<divclass="some_class"><div>Download</div><div class="quality">'+ element[1] +' ('+ element[2] + 'ГБ)</div></div>'
当然会导致语法错误。
如何解决?
编辑:如果我直接转到该页面http://myserver.com/script.js - 它可以正常运行。但是,如果我使用ajax加载它:
$.ajax({url: "http://myserver.com/script.js?url=" +
location.href, dataType: "script"});
它被HTMLEncoded。
答案 0 :(得分:1)
您需要找出应用此类转化的位置。它可能是服务器端或您的ajax库。我建议您在浏览器开发者工具中查看“网络”页面。在那里,你可以看到你从服务器那里得到的东西。
答案 1 :(得分:0)
尝试
var replaceStrings = {
"&": "&",
"<": "<",
">": ">",
'"': '"',
"'": ''',
"/": '/'
};
function escapeHtmlCharacters(string) {
return String(string).replace(/[&<>"'\/]/g, function (str) {
return replaceStrings[str];
});
}
或者只是
html.replace(/&/g, '&')
.replace(/>/g, '>')
.replace(/</g, '<')
.replace(/"/g, '"')
.replace(/'/g, ''');
答案 2 :(得分:0)
解决。感谢所有人。
将.htmlsafe方法添加到Rails View。