Tengo el siguiente código para comprobar si un ID de YouTube es válido. Es un poco de un truco, pero funciona bien. Comprueba el tamaño de la imagen en miniatura devuelta. Si no es un video de YouTube válido, obtienes la miniatura de marcador de posición estándar que mide solo 120px . La miniatura válida regular es 160px para que pueda probar si es una identificación legítima.
El problema que tengo es que esta declaración if no espera a que la imagen se cargue y pruebe el ancho, por lo que no detecta el cambio de la variable ok_to_add a verdadero (o 1). ¿Cómo puedo hacer que el script espere el resultado de la función img.onload y confirm antes de continuar? Necesitaré varios de estos controles, todos con diferentes criterios para diferentes jugadores.
var ok_to_add = 0; if (this_player_item == 'youtube') { var img = new Image(); img.src = "http://img.youtube.com/vi/" + this_player_id + "/mqdefault.jpg"; img.onload = function () { var img_width = img.width; if(img_width < 130) { var thisconfirm = confirm("This YouTube ID doesn't appear to be valid. Proceed anyway?"); if (thisconfirm) { ok_to_add = 1; } else { return false; } } else { ok_to_add = 1; } } alert(ok_to_add); }