我有一个应用程序,其中用户有一些设置页面,其中一些设置允许输入URL。我希望能够使用javascript运行检查,以确保他们输入的网址有效并且是真实的网址。
当他们点击提交时,它将执行它应该执行的操作,或者如果URL中有错误,则弹出警告并说“输入的URL无效!”。
有没有办法用JS做到这一点?我也希望这个脚本与http://和https://以及www一起使用。在URL中,以及每个域扩展名(.com,.tv等)。这也需要使用JavaScript,而不是jQuery。
有人能告诉我怎么做吗?感谢。
答案 0 :(得分:2)
似乎你想要做两件事:
1)确定URL有效(即格式正确)
为此,正则表达式将运行良好,这种方法还允许您检索URL的各个部分,如果这是您想要做的事情。
这里已经讨论过:What is the best regular expression to check if a string is a valid URL?。
2)确定网址是真实的(即,如果有人在哪里跟踪,他们会发现某些内容)
这更棘手,但您可以尝试向URL发出AJAX请求,如果失败或超时则假设它已关闭。由于站点上的XSS安全功能,此方法可能存在一些限制。
如果这是一个问题,您可以创建自己设计的服务,该服务在JavaScript发出请求的服务器上运行,将URL传递给它,并以失败或成功的方式响应。
以下是一个例子:
verify.js
function verifyURL (url) {
// with jQuery
$.getJSON('check-url.cgi', { url : url }, function (res) {
console.log(res); // display server response
if ( res.status == 'success' ) {
// URL is real
} else {
// URL is not real
}
});
}
check-url.cgi
#!/usr/bin/env perl
use v5.10;
use strict;
use warnings;
use CGI qw(:standard);
use JSON::XS;
use LWP::UserAgent;
my $ua = LWP::UserAgent->new;
$ua->agent("URL Checker/0.1");
my $url = param('url');
my $req = HTTP::Request->new(GET => $url);
my $res = $ua->request($req);
my $status = $res->is_success ? 'success' : 'failure';
print header('applicaton/json'), encode_json { status => $status };