当我在Facebook中输入一个链接(视频,图像,网址等)时,“你有什么想法?”表单,它会自动检测链接并将其转换为缩略图,并在文本区域下方添加简要说明。任何人都可以向我提供见解或链接,让我了解如何实现这一目标吗?
答案 0 :(得分:2)
有一个附加到textarea更改事件的JavaScript。 javascript检测textarea的内容是否为url,如果是,则javascript调用访问url的webservice寻找页面标题,页面描述等(或者打开图形协议元标记),如果是找到每个标签,然后将它们返回给正确组织的javascript。
Facebook也会缓存此内容,如果其他用户发布了相同的网址,则他会使用缓存值而不是重新访问该网页。
开放图协议元标记:
http://developers.facebook.com/docs/opengraphprotocol/
答案 1 :(得分:2)
使用
之类的东西var input = document.getElementById("textarea");
input.addEventListener("change", checkLink(e));
input.addEventListener("blur", checkLink(e));
function checkText(text){
var exp = "((ht|f)tp(s?))(:((\/\/)(?!\/)))(((w){3}\.)?)([a-zA-Z0-9\-_]+(\.(com|edu|gov|int|mil|net|org|biz|info|name|pro|museum|co\.uk)))(\/(?!\/))(([a-zA-Z0-9\-_\/]*)?)([a-zA-Z0-9])+\.((jpg|jpeg|gif|png)(?!(\w|\W)))";
return text.match(exp);
}
function checkLink(e){
//here you would want to use a regular expression and check for http:
var regularExpression = !!checkText(e.target.innerHTML); // returns true or false
if(regularExpression){
e.target.innerHTML += "<a href='#'><img src="" alt="" /></a>";
}
}
正则表达式的良好资源 - http://regexlib.com/Search.aspx?k=image&c=-1&m=-1&ps=20
答案 2 :(得分:0)
警告 - 必须离开工作,因此不会检查正则表达式。
获取链接值并通过查找^http:...[^\s]
或^https:...[^\s]
的正则表达式运行它并返回这些值。
然后,将这些URL传递到您的服务器,让服务器检索文档并为您返回一个snippit然后放入您的文档。您必须拥有自己的服务器才能提供帮助,因为Javascript本身具有安全限制。 Google same origin policy
了解更多信息。