如何使用 JavaScript 回调函数检测文本区域中的 url?
如何使用 JavaScript 检测文本区域中的 url?使用 Facebook,您可以添加一个网址,一旦您完成粘贴/输入,它就会检测该地址。这怎么能做到呢?我对回调函数等做了很多研究,但想知道如何检测实际的 url?
How can you detect a url in a textarea with JavaScript? With Facebook you can add a url and it will detect the address as soon as you finished pasting/typing it. How can this be done? I've done a lot of research on callback functions, etc. but am wondering how I can detect an actual url?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
如果您使用 jQuery,最简单的方法是使用 $.change()。
假设您有一个表单字段:
现在您可以将更改事件绑定到它,同时查明它是否是有效的 url:
然后您将拥有一个检查 url 并返回布尔值的函数。请注意,我从此处获取此内容
免责声明:我尚未测试任何 JavaScript,但这应该能让您很好地了解如何实现这一目标。
If you are using jQuery the easiest way is with $.change().
Say you have a form field:
Now you can tie a change event to it, and at the same time find out if its a valid url:
Then you would have a function that checks for a url and returns a boolean value. Note, I took this from here
Disclaimer: I haven't tested any of the javascript, but this should give you a good idea of how you could accomplish this.
只需处理
onkeyup
或类似事件,然后搜索与正则表达式匹配的文本区域的值。没有特殊的回调来捕获诸如“用户在文本区域中编写了链接”之类的事件:-) 因此您必须捕获现有事件并自行处理。Just handle
onkeyup
or similar event and then search the value of the textarea matching the regular expression. There's no special callback to catch event like "user wrote a link in a textarea" :-) So you have to catch existing events and handle it yourself.上一个答案中的正则表达式并不匹配所有可能的 URL,因为仅当它们以 ftp、http 或 https 开头时才会被检测到,因此
example.com
或www.example.com
不会被发现。此外,每次按下按键时都会进行验证,因此如果您编写像
example.com
这样的 url,它会先检测example.co
,然后检测example。 com
如果您使用它来获取额外信息(例如获取找到的 URL 的 META),这可能会很糟糕。setTimeout()
和clearTimeout()
有助于减少验证频率请参阅:
当用户完成输入而不是按键时运行javascript函数?
这里是我最终得到的代码:
如果您需要获取所有 URL,您可以使用此函数,它返回包含所有可用 URL 的数组:
The regex on previous answer doesn't match all possible URL because they are detected only if they begin with ftp, http or https, so
example.com
orwww.example.com
would not be found.Also, the verification is made everytime you press a key so if you're writing an url like
example.com
, it will detectexample.co
thenexample.com
which could be bad if you use it for extra information (like getting META of found URL).setTimeout()
andclearTimeout()
help to reduce the frequency of verificationSee :
Run javascript function when user finishes typing instead of on key up?
Here the code I end up with :
If you need to get all URLs, you can use this function which return an array with all available URLs :