我制作了一个需要javascript的网页。更具体地说,如果有人听说过,我使用Ajax-Solr API为Apache Solr / Lucene搜索引擎创建一个良好的用户界面。对于出现的一些结果(已经被抓取的网页),javascript被嵌入到某些网页中,这就是我后续的html / javascript的一部分。帮帮我。以下是我的一些代码:
AjaxSolr.theme.prototype.snippet = function(doc) {
var output = '' + doc.id;
if (doc.text.length > 300) {
output += doc.text.substring(0, 300);
output += '<span style="display:none;">' + doc.text.substring(300);
output += '</span> <br id="aftsnippet"/><a href="#" class="more"><button id = "expand' + doc.id + '">Expand/Contract</button></a>';
} else {
output += doc.text + '<br/>';
}
output+='<a id="goToSite"><button>Go to Site</button></a><a href="pages/sitedetails.html?id=' + doc.id + '" target="_blank"><button id = "sitedetailsbutton' + doc.id + '">Site Details</button></a>';
return output;
};
我不知道这是否有帮助,但几乎所发生的是doc.text可能包含来自javascript文件在线的一些随机javascript,然后导致按钮来自
<button>Go to Site</button></a><a href="pages/sitedetails.html?id=' + doc.id + '" target="_blank"><button id = "sitedetailsbutton' + doc.id + '">Site Details</button></a>';
不显示。我该怎么做才能解决这个问题?
答案 0 :(得分:1)
您需要对JavaScript进行HTML编码。你可以用以下方法做到这一点。
function htmlEncode(s) {
return s.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>');
}
此外,您可以根据需要将换行符替换为<br />
:
function htmlEncode(s) {
return s.replace(/&/g,'&').replace(/</g,'<').replace(/>/g,'>').replace(/\n/g,'<br />');
}