用https替换JSON编码的feed值的image src协议http:

时间:2013-03-20 17:38:06

标签: javascript jquery image rss feed

我有一个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:'),但这也无效

一如既往,任何帮助表示赞赏

1 个答案:

答案 0 :(得分:1)

String.replace方法不会更改原始字符串,而是返回新字符串。考虑到这一点,您需要使用:

News.content = News.content.replace(...);

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/String/replace