1

我想用链接替换 ​​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,有什么提示吗?谢谢

update2:最后我做了一个愚蠢的技巧来避免代码伤害 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);

update3:我把所有的 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]);}
4

1 回答 1

0

你的意思是你不想改变框架中的链接?

如果是这样,您需要添加

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>"); 
}

来源:如何用链接替换纯 URL?

于 2012-04-23T20:35:12.950 回答