Soy estudiando de FP Superior Desarrollo de Aplicaciones Web y mañana tendre un examen que otro grupo ha realizado este lunes mismo. Ellos nos pasaron la imagen de su examen. Lo que pide el examen es lo siguiente:
Vale, pues yo estaba planteandolo con las formas que he tenido de apuntes ... Pero he llegado a un punto que no entiendo porque pasa esto:
Uncaught SecurityError: Blocked a frame with origin "null" from accessing a frame with origin "null". Protocols, domains, and ports must match.
Todo esto sucede al parecer a entrar en la variable "contenido" y "manipulacion" pero no se ni como solucionarlo. ¿Alguien podria explicarmelo por favor? Os dejo el codigo aqui (Es enorme, el tema optimizaciones pues ... como que no estaba demasiado preocupado XD)
Aun no está terminado pero como estaba probando pues cuando vi que fallo pues pare
Código HTML:
Ver original
Código Javascript:
Ver original
var Introducir = ""; var TuNombre = ""; var TusApellidos = ""; var FechaActual = new Date(); var Dia; var Mes; var Meses = [["ENERO","1"], ["FEBRERO","2"], ["MARZO","3"], ["ABRIL","4"], ["MAYO","5"], ["JUNIO","6"], ["JULIO","7"], ["AGOSTO","8"], ["SEPTIEMBRE","9"], ["OCTUBRE","10"], ["NOVIEMBRE","11"], ["DICIEMBRE","12"]]; var Ano; var AnoActual = FechaActual.getFullYear; var FechaIntroducida; function Iniciar () { setTimeout("AbrirVentana()", 3000); } function AbrirVentana() { primeraventana = window.open("","Ventana hija", "width=1200,height=1200,resizable=0"); URL = location.href; Protocolo = location.protocol; NombreNavegador = navigator.appName; JavaActivado = navigator.javaEnabled(); if (JavaActivado == true) { Java = "Java SI disponible"; Color = Java.fontcolor("green"); } else { Java = "Java NO disponible"; Color = Java.fontcolor("red"); } Introducir += '<html>\n'; Introducir += '<head>\n'; Introducir += '<title>Primera Ventana Hija</title>\n'; Introducir += '</head>\n'; Introducir += '<body>\n'; Introducir += '<h3>Ejemplo de Ventana Nueva por Francisco Javier Yanes Delgado</h3>\n'; Introducir += '<p align="right">URL: '+URL+'</p>\n'; Introducir += '<p align="left">Protocolo utilizado: '+Protocolo+'</p>\n'; Introducir += '<p align="center">Nombre del navegador: '+NombreNavegador+'</p>\n' Introducir += Color + '\n'; Introducir += '</body>\n'; Introducir += '</html>\n'; contenido = primeraventana.document; contenido.write(Introducir); contenido.close(); SegundaVentana(); } function SegundaVentana () { segundaventana = window.open("","Segunda Ventana Hija"); TuNombre = 'Nombre Desconocido'; while (TuNombre == 'Nombre Desconocido') { TuNombre = prompt("Introduza su nombre",""); if (TuNombre == null || TuNombre == '') { TuNombre = 'Nombre Desconocido'; } } /***************************************************/ TusApellidos = "Apellidos_desconocidos"; while (TusApellidos == "Apellidos_desconocidos") { TusApellidos = prompt("Introduzca sus apellidos",""); if (TusApellidos == null ||TusApellidos == '') { TusApellidos = "Apellidos_desconocidos"; } busqueda = TusApellidos.split(" ",2); if (busqueda[1] == null || busqueda[1] == '' || busqueda[1] == undefined) { alert("Solo has introducido un apellido"); TusApellidos = "Apellidos_desconocidos"; } } /***************************************************/ Dias(); Mes() Ano(); /*****************************************************/ //Comprobación si la fecha introducida es superior a la actual FechaIntroducida = new Date(Ano,Mes,Dia); while (FechaIntroducida > FechaActual) { alert("Lo siento, pero la fecha introducida es incorrecta (O nacistes en el futuro, quien sabe)"); Dias(); Mes(); Ano(); FechaIntroducida = new Date(Ano,Mes,Dia); } Introducir = '<html>\n'; Introducir += '<head>\n'; Introducir += '<title>Segunda Ventana Hija</title>\n'; Introducir += '\x3Cscript type="text/javascript">\n'; Introducir += 'function Comprobar () {\n';; Introducir += ' TuNombre = "'+TuNombre+'";\n'; Introducir += ' TusApellidos = "'+TusApellidos+'";\n'; Introducir += ' Dia = "'+Dia+'";\n'; Introducir += ' Mes = "'+Mes+'";\n'; Introducir += ' Ano = "'+Ano+'";\n'; Introducir += ' if(TuNombre == null || TusApellidos == null || Dia == null || Mes == null || Ano == null){\n'; Introducir += ' alert("Algun campo está incorrecto. Por favor, compruebe los campos de nuevos");\n'; Introducir += ' return;\n'; Introducir += ' }\n'; Introducir += '}\n'; Introducir += '\x3C/script>\n'; Introducir += '</head>\n'; Introducir += '<body onunload="Comprobar()">\n'; Introducir += '</body>\n'; Introducir += '</html>\n'; manipulacion = segundaventana.document; manipulacion.write(Introducir); manipulacion.close(); } function Dias() { Dia = 00; while (Dia == 00) { Dia = prompt("Introduce el día de nacimiento",""); if (isNaN(Dia)) { Dia = 0000; } else if (Dia == "" || Dia == null) { alert("No ha introducido un valor al dia de nacimiento"); Dia = 00; } else if (Dia <1 && Dia >30) { alert("Has introducido un valor superior a los dias del mes"); Dia = 00; } } } /*Introducción del día de nacimiento*/ function Mes() { Mes = 00; while (Mes == 00) { var MesEscrito = prompt("Introduzca el mes de nacimiento",""); if (MesEscrito == null || MesEscrito == '') { Mes = 00; } MesEscrito = MesEscrito.toUpperCase(); for (i = 0;i < Meses.length;i++) { if (MesEscrito == Meses[i][0]) { Mes = Meses[i][1]; return; } if (i == Meses.length-1) { if (MesEscrito != Meses[i][0]) { Mes = 00; return; } } } } } /*Introducción del mes de nacimiento*/ function Ano() { Ano = 0000; while (Ano == 0000) { Ano = prompt("Introduzca el año de nacimiento(Numérico con 4 cifras)",""); if (isNaN(Ano)) { Ano = 0000; } else if (Ano == null || Ano == '') { Ano = 0000; } else if (Ano.length > 4) { alert("Has introducido un valor superior a 4 cifra"); Ano = 0000; } else if (Ano > AnoActual) { alert("Has introducido un año superior al año actual, por lo que o naceras en el futuro o estas aquivocado :P"); Ano = 0000; } } }/*Introducción del año de nacimiento*/
Un detalle mas ... La function Comprobar () ... Realmente como lo tengo planteado nunca podria no pasar un dato por lo que creo que es inutil, pero como el examen lo pide pues me toca ponerlo
Edito: Y otra pregunta más que queria hacer a mi profesora pero como hoy no voy para practicar no puedo realizarla. Tenemos la variable TusApellidos ... En ella metemos el apellidos "Yanes Delgado" y con el split es sencillo sacarle cual es el primer y cual es el segundo apellido pero ... ¿Y si es apellido es "Del Rio Gomez" como saco cual es el primero y cual es el segundo? Y hay mas variaciones de apellidos que el primero y el segundo estan unidos por - ... No se como contemplar todas esas posibilidades (Mi profesora es la tipica que va a matar XD)
Muchas gracias por su atencion