我有一个https协议上的网站,通过ajax JSONP使用google load feed API,然后通过返回的json对象进行迭代以注入内容
问题是内容节点有我想要包含的html,例如插入海报的图像:
"Title":"post title",
"Content":"<p><img src='http://theothersite.com'/> this is an example post</p>"
当我使用each()遍历json时,内容html被追加,并向浏览器抛出一个不安全的内容警告,因为image src是http协议
$.each(json.responseData.feed.entries, function(arrayID, News) {
for(var i = 0; i < News.categories.length; i++)
{
html = '<li class="post news"><h3><a target="_blank" href="'+News.link+'">'+News.title+'</a></h3>';
// HERES WHERE ATTENTION NEEDED
html +='<div class="excerpt">'+News.content+'</div></li><hr>';
$("#newsList ul").append(html);
我无法弄清楚如何解析src的节点内容的值,并将任何src替换为具有https作为协议的新src,同时保留所有其他字符串数据
我已经尝试过匹配,它可以很好地将src变成一个变量,但它没有占用其余的字符串,所以当我替换它时它没有保留内容
var iMatches = News.content.match(/src=\"(.+?)\"/igm); //alert(iMatches);
if (iMatches) {
News.content.replace(/src=\"http:(.+?)\"/igm, /src=\"https:(.+?)\"/igm);}
我也尝试将替换为替换('http:','https:'),但这也无效
一如既往,任何帮助表示赞赏
答案 0 :(得分:1)
String.replace
方法不会更改原始字符串,而是返回新字符串。考虑到这一点,您需要使用:
News.content = News.content.replace(...);
https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace