【问题标题】:how to replace url with hyper link that do not harm iframe如何用不损害 iframe 的超链接替换 ​​url
【发布时间】:2012-05-04 11:39:56
【问题描述】:

我想用链接替换 ​​url,以下代码可以正常工作,但它会损害 iframe(例如 youtube),有什么建议吗?thx

$(".css___div p").html($(".css___div p").html().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>"));

更新: 实际上我正在做一个 bbs,有时人们想发布一个 youtube,所以他们会在帖子中制作一个 iframe……例如:

check out my mv!!!
<iframe width="560" height="315" src="http://www.youtube.com/embed/F1C9zIA50Eo" frameborder="0" allowfullscreen></iframe>
http://youtu.be/F1C9zIA50Eo

我想把http://youtu.be/F1C9zIA50Eo 变成一个链接,而不是http://www.youtube.com/embed/F1C9zIA50Eo,有什么提示吗?谢谢

更新2: 最后我做了一个愚蠢的技巧来避免代码伤害iframe:

var var___iframeSRC=$(".css___funk .css___div p iframe").attr("src");
$(".css___div p").html($(".css___div p").html().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>"));
$(".css___funk .css___div p iframe").attr("src",var___iframeSRC);

更新3: 我把所有的 src 放到一个数组中......但这仍然是一个愚蠢的把戏,欢迎任何建议

arr___iframeSrc=new Array();
$(".css___funk .css___div p iframe").each(function(){
    arr___iframeSrc.push($(this).attr("src"));
});

$(".css___funk .css___div p").html($(".css___funk .css___div p").html().replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,"<a href='$1' target='_blank'>$1</a>"));

for(var i=0;i<arr___iframeSrc.length;i++){$(".css___funk .css___div p iframe").eq(i).attr("src",arr___iframeSrc[i]);}

【问题讨论】:

  • 您的更新不是正确的解决方案。如果有人发布 2 个(或更多)不同的 iframe,会发生什么?
  • 是的...所以,任何建议... T.T"

标签: javascript jquery url iframe replace


【解决方案1】:

您的意思是您不想更改框架中的链接?

如果有,你需要添加

if (window.top != window.self) {
    return;
}

到你的脚本

编辑

好的。来自您的评论

我想把youtu.be/F1C9zIA50Eo 变成一个链接,但不是 youtube.com/embed/F1C9zIA50Eo,有什么提示吗?

我相信这就是你要找的:

function replaceURLWithHTMLLinks(text) {
   var exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig;
   return text.replace(exp,"<a href='$1'>$1</a>"); 
}

来源:How to replace plain URLs with links?

【讨论】:

  • thx 但不,实际上我正在做一个 bbs,有时人们想发布一个 youtube,所以他们会在帖子中制作一个 iframe……例如:### 看看我的 mv! !! youtu.be/F1C9zIA50Eo ### 我想把youtu.be/F1C9zIA50Eo变成一个链接,但不是@987654327 @,有什么提示吗?谢谢
  • 是的。很难理解你的问题。也许你应该从这里开始:How to Ask
  • 谢谢,首先,抱歉我的英语不好,但是,您的代码(以及我在顶部的代码)工作正常,除了用户嵌入了 youtube 视频(iframe)。
猜你喜欢
  • 2014-02-21
  • 2022-12-05
  • 2010-09-07
  • 2020-07-21
  • 2017-09-14
  • 2018-03-22
相关资源
最近更新 更多