Проблема в том, что if(url.toLowerCase().indexOf('vimeo') > 0)
, если ваш URL-адрес равен vimeo.com/idnro
, тогда индекс vimeo
в URL-адресе равен 0. Также вы, вероятно, захотите изменить свое регулярное выражение на re = new RegExp('[0-9]+$')
, чтобыучтите URL, такие как
http://vimeo.com/groups/687/videos/3741327
В противном случае вы будете соответствовать 687, а не фактическому идентификатору видео.Я также настоятельно рекомендую FireBug для отладки подобных вещей.Это драгоценный камень.
ОБНОВЛЕНИЕ
Если предположить, что неправильно сформированный URL войдет в vimeo_id_extract
, это то, что я бы сделал.Сначала верните число в обоих случаях из vimeo_id_extract
и убедитесь, что возвращенное число не является недействительным.Если нет, то все должно быть в порядке, иначе в URL не было бы идентификатора видео.
Если вы знаете, что идентификатор видео всегда завершает строку, то добавьте знак $
в конце регулярного выражения вубедитесь, что последняя семизначная последовательность извлечена.
function vimeo_id_extract(url) {
var re;
var match;
re = new RegExp('[0-9]{7}');
match = re.exec(url);
if(match != null) {
return match[0];
}
else {
return -1;
}
}
function vimeo_do(video, width, height) {
var make_syntax;
var regexp_url;
regexp_url = /((mailto\:|(news|(ht|f)tp(s?))\:\/\/){1}\S+)/;
if(regexp_url.test(video) == false) {
vimeo_id = vimeo_id_extract(video)
if vimeo_id != -1 {
make_syntax = vimeo_embed_format(vimeo_id_extract(video), width, height);
}
else {
// there is no video id in the string passed in
}
} else {
make_syntax = vimeo_embed_format(video, width, height);
}
document.writeln(make_syntax);
}