1

我有一个关于 https 协议的站点,它通过 ajax JSONP 使用 google load feed API 的 wordpress rss feed,然后通过返回的 json 对象迭代以注入内容

问题是内容节点具有我想要包含的 html,例如海报插入的图像:

  "Title":"post title",
  "Content":"<p><img src='http://theothersite.com'/> this is an example post</p>"

当我使用 each() 遍历 json 时,会附加内容 html,并向浏览器抛出不安全的内容警告,因为图像 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);}

我也尝试替换为 replace('http:', 'https:') 但这也不起作用

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

4

1 回答 1

1

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

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

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

于 2013-03-20T18:32:11.880 回答