如何从像facebook这样的文本框中检测网址?

时间:2011-11-08 08:28:45

标签: javascript jquery facebook user-interface

我正在研究asp.net mvc3应用程序。在这里我有一个textarea,用户可以在点击按钮时从我的代码获取url详细信息中写入url并粘贴url。

但我想像facebook一样实现它。在Facebook上我们写一些网址时会自动获取网址详情,

我尝试过键盘功能,但会不断检查输入网址。

 $('#urlinput').keyup(function () {
        //alert("something is here!!");
        if (!isValidURL($('#urlinput').val())) {
            alert('Please enter a valid url.');
            return false;
        }
        else {
        some code...
}

我在facebook中发现的是,当我们写下url后跟空格时,它会获取url的详细信息,当我们将url粘贴到文本框中时,它将获取url的详细信息。我怎么能这样实现呢?

任何人都可以建议我像Facebook一样实施该怎么做?

3 个答案:

答案 0 :(得分:1)

如果我想尝试,我会这样做:

  1. 如果我使用鼠标粘贴网址,我会在mouseup事件上打开浏览器
  2. 如果我使用键盘粘贴,则必须是CTRL + V ...所以在CTRL键盘上,我会获取URL
  3. 如果我正在打字,那么我会去键盘或文本框失去焦点
  4. 希望这有帮助

答案 1 :(得分:1)

粘贴会引发一个可以与之绑定的事件:

$(myelement).bind('paste',function(event) {
    alert('paste');
});

关于keyup事件,事件对象将提供在event.which中按下的键。

$(myelement).bind('keyup',function(event) {
    alert(event.which);
});

使用正则表达式,您可以提取网址。你可以在这个地址找到正则表达式:http://regexlib.com/Search.aspx?k=URL&AspxAutoDetectCookieSupport=1

现在对于Facebook上的“预览”功能,我想这有点困难,因为他们似乎分析了目标网址的内容,以提取缩略图和一些内容(文章文本等)。

希望这有帮助, d。

答案 2 :(得分:0)

嗯,您必须在keyup上执行此操作,也可以在onchange上执行此操作,以便在用户粘贴网址时处理此情况。

当您识别出有效的网址时,您应该使用AJAX将其发送到服务器。然后,服务器下载URL,并分析HTML的字符串以获取页面标题等数据,并将此数据打磨回客户端,您可以在其中向用户显示该数据。