_b ='$nbsp;';
//Pregunta 30
preguntas.creapregta('¿Como cargar un include dependiendo del navegador?');
preguntas.crearespta(30,'Se puede lograr creando código en línea mediante el método <b>document.write</b>. De esta forma puede cambiarse tanto los archivos de programa como los archivos de estilo enlazados. Un ejemplo lo aclarará<br>'+
'if (navigator.appName.indexOf("Microsoft") >=0)<br>'+
'&nbsp;&nbsp; {<br>'+
'&nbsp;&nbsp; document.write(\'&lt;script language="Javascript" src="archivo1.js"&gt;);<br>'+
'&nbsp;&nbsp; document.write("&lt;\/s"+"cript>")<br>'+
'}<br>'+
'else<br>'+
'&nbsp;&nbsp; {<br>'+
'&nbsp;&nbsp; document.write(\'&lt;script language="Javascript" src="archivo2.js"&gt;<br>'+
'&nbsp;&nbsp; document.write("&lt;\/s"+"cript>")<br>'+
'&nbsp;&nbsp; }<br>'+
'En este caso se enlaza un fichero archivo1.js si el navegador es el de microsoft y el archivo2.js si es otro navegador. Esto puede hacerse de la misma forma para archivos de estilos.<br><b>Ojo</b>, observar como se separa la etiqueta del final del script en <b>document.write</b> para evitar que el navegador la considere como con un final del script actual.<br>');
preguntas.crearespta(30,'Netscape no reconoce la etiqueta JScript como nombre del lenguaje mientras que MSIE la acepta. Basándose en esta diferencia se pueden cargar archivos js dependiendo del navegador<br>'+
'&lt;script language="Javascript" src="archivo_ns.js"&gt;&lt;/script&gt;<br>'+
'&lt;script language="JScript" src="archivo_ie.js"&gt;&lt;/script&gt;<br>'+
'Netscape saltaría el segundo script mientras que IE lo cargaría como un archivo de guiones basado en el lenguaje JScript.<br>');
preguntas.crearespta(30,'Otra opción es usar un página para cada navegador y una página de carga. La página de carga examinará la versión y modelo del navegador y cambiará a la página adecuada. Algo así:<br>'+
'&lt;html&gt;&lt;head&gt;<br>'+
'&lt;script language="javascript"&gt;<br>'+
'var expl = navigator.appName.toUpperCase();<br>'+
'if (expl.indexOf("MICROSOFT") >=0) location.href ="paginaie.htm"<br>'+
'else location.href = "paginans.htm"<br>'+
'&lt;/head&gt;<br>'+
'Para comprobar la versión y nombre del explorador puede usarse el objeto navegador definido en la sección de <a href="../scripts/navegadores1.htm">ejemplos</a>.');
//Pregunta 31
preguntas.creapregta('Solicito del usuario con un cuadro de dialogo un dato; dependiendo cual sea su respuesta le llevará a una página o a otra. ¿Como hacerlo?')
preguntas.crearespta(31,'El método mas inmediato es usar la estrucutra <b>switch</b> y el objeto <b>location</b>. El esquema es simble, una vez leida la variable con el dato del usuario, a la que llamaremos <b>respuesta</b>, usamos esta estructura:<br>'+
'switch (respuesta){<br>'+
'&nbsp;&nbsp;&nbsp;valor1: location.href = "pagina0.htm"<br>'+
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>'+
'&nbsp;&nbsp;&nbsp;valor2: location.href = "pagina1.htm"<br>'+
'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;<br>'+
'&nbsp;&nbsp;&nbsp;default: location.href = "pagpordefecto.htm"<br>'+
'&nbsp;&nbsp;&nbsp;}<br>'+
'Donde valor1, valor2 representan posibles valores de la variable <b>respuesta</b>.<br>'+
'Si el valor de la respuesta no es ninguno de los previstos usamos la opción <b>default</b> que llevaría al usuario a una ventana por defecto. Aunque también podríamos usar una ventana <b>alert</b> para indicarle que su respuesta no es válida');
//Pregunta 32
preguntas.creapregta('¿Cómo puedo lograr que al pasar el cursor por la celda de una tabla, dicha celda cambie de color, y cuando retire el cursor, vuelva a tomar el color inicial?');
preguntas.crearespta(32,'Los exploradores que cumplen con el standard DOM1 pueden hacer esto con los habituales eventos <b>onmouseover</b> y <b>onmouseout</b>; aplicado al elemento TD. Tan fácil como lo que sigue:<br>'+
'&lt;td onmouseover=" this.bgColor=\'yellow\' " onmouseout="this.bgColor=\' \' "&gt;'+
'La celda&lt;/td&gt;<br>'+
'Fácil pero esto sólo funciona a partir de MSIE 5 y posiblemente con Netscape 6, que presume de cumplir con el standard DOM1.');

preguntas.crearespta(32,'Otra forma es poner en la celda un enlace con los eventos onmouseover y onmouseout que cambiarán las propiedades del fondo. Dentro del enlace colocamos un elemento DIV con posicionamiento relative y el clip a todo el ancho de la celda. Veamos un código que hace esto:<br>'+
'&lt;td&gt;<br>'+
'&lt;a href="#" onmouseover="fondo(\'fnd\',\'yellow\')"<br>'+
' onmouseout="fondo(\'fnd\',null)"'+
'&gt;<br>'+
'&lt;div id="fnd" class="celda"&gt;Otro método&lt;/div&gt;<br>'+
'&lt;/a&gt;<br>&lt;/td&gt;<br>'+
'La función fondo será<br>'+
'function fondo(elem, color)'+
'{<br>'+
'if (document.all)<br>'+
'&nbsp;&nbsp; document.all[elem].style.backgroundColor= color==null?\' \':color<br>'+
'else<br>'+
'&nbsp;&nbsp; document.layers[elem].bgColor = color<br>'+
'}<br>'+
'Y el estilo celda se define como <br>'+
'&lt;style type="text/css"&gt;<br>'+
'<b>.</b>celda {  position: relative; clip: rect(0px 160px 17px 0px)}<br>'+
'&lt;/style&gt;<br>'+
'Pero sólo funciona perfectamente en el caso de MSIE, Netscape sólo actúa al paso del ratón por el enlace. Además sólo funciona en el Netscape versión 4.x<br>&nbsp; ');
preguntas.crearespta(32,'Desde <a href="mailto:gpa36@hotmail.com">gpa36@hotmail.com</a> envía otra forma de conseguir este efecto. Sería <br>'+
'&lt;script language="Javascript"&gt;<br>'+
'&lt;!--<br>'+
'menu="off"<br>'+
'var tdOutColor = "#1ef3fe";<br>'+
'var tdEntradaColor = "#18ff11";<br>'+
'function checabrowser(){<br>'+
'var x = navigator.appVersion;<br>'+
'y = x.substring(0,4);<br>'+
'if (y>=4) setVariables();<br>'+
'}<br>'+
'function mudacor(prmThis,prmColor)<br>'+
'{<br>'+
'if ((window.document.all) || (window.document.getElementById))<br>'+
'prmThis.style.backgroundColor = prmColor;<br>'+
'else if (window.document.layers)<br>'+
'prmThis.bgColor = prmColor;<br>'+
'}<br>'+
'//--&gt;<br>'+
'&lt;/script&gt;<br>'+
'y luego en la tabla aplicamos<br>'+
'bueno en la celda<br>'+
'&lt;table&gt;<br>'+
'&lt;tr&gt;<br>'+
'&lt;td bgcolor="#1124ff" onMouseOver="mudacor(this,tdEntradaColor)" onMouseOut="mudacor(this,tdOutColor)" width=107 height=36 valign=top align=left></td><br>'+
'&lt;/tr&gt;<br>'+
'&lt;/table&gt;<br>'+
'en donde tdEntradaColor es el color cuando entramos y tdOutColor aplica el color cuando salimos lo siento pero no soy bueno para explicar las cosas que hago');



//Pregunta 33
preguntas.creapregta('¿Qué es y para que se usa la función setTimeout( )?');
preguntas.crearespta(33, 
" Se trata de un evento de la página asociado al reloj del sistema y por "+
"  tanto su ejecución se realiza en funci&oacute;n del tiempo. Este evento "+
"  se dispara cuando haya transcurrido el tiempo que se le indique, en ese momento "+
"  ejecuta la funci&oacute;n que le hayamos indicado al iniciarlo. El siguiente "+
"  ejemplo ilustra su forma de uso:<br><br>"+
"  var retraso;<br>"+
"  function mifuncion( )<br>"+
"  {<br>"+
"  location.href = &quot;otrapagina.htm&quot;<br>"+
"  } <br>"+
"  retraso = setTimeout(&quot;mifuncion()&quot;, 1000)<br><br>"+
"  El primer argumento, mifuncion( ), es el nombre de una funcion definida por "+
"  nosotros y el segundo indica el tiempo, en milisegundos, que queremos que transcurra "+
"  hasta que se dispare. La funci&oacute;n devuelve un objeto que luego podemos "+
"  usar con la funci&oacute;n clearTimeout( ) para eliminar el temporizador<br>"+
"  clearTimeout(retraso )<br>"+
"  En el ejemplo al cabo de 1 seg (1000 mseg) se el navegador ejecutar&aacute; "+
"  mifuncion( ) y saltar&aacute; a la direcci&oacute;n otrapagina.htm. Si queremos "+
"  que el evento se repita varias veces podemos volver a inciarlo dentro de mifuncion( "+
"  ). Por ejemplo:<br><br>"+
"  var contador=0;<br>"+
"  function mifuncion( )<br>"+
"  {<br>"+
"  window.status = contador++;<br>"+
"  if (contador &lt; 20)<br>"+
"  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;retraso = setTimeout(&quot;mifuncion()&quot;, "+
"  1000)<br>"+
"  else<br>"+
"  &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;clearTimeout(retraso) <br>"+
"  } <br><br>"+
"La función se llamaría 20 veces tras lo cual se elimina el evento. "+
"Una alternativa es usar el evento setTimeInterval( ) que funciona de manera "+
"  similar salvo que el temporizador se reinicia autm&aacute;ticamente tras ejecutarse, "+
"  en otras palabras, llama repetidamente a la funci&oacute;n hasta que se libere "+
"  usando clearTimeInterval( ).");

//Pregunta 34
preguntas.creapregta('Como puedo crear un formulario en el que los usuarios puedan introducir sus datos y estos queden almacenados y osteriormente si lo desean pudan modificarlos o agregar más');
preguntas.crearespta(34,
'Para mantener los datos del formulario cuando el usuario salga de la página puedes almacenarlos en cookies. Por ejemplo puedes usar un botón para almacenar los datos, este botón llamará a la rutina que crea los cookies correspondientes y otro botón para que los lea, o leerlos mediante un evento <b>onload</b> al cargar la página. Si quieres que los datos se mantengan sólo durante la sesión actual no coloques el atributo expires, y si quieres que los datos se mantengan durante un tiempo le colocas el atributo expires con la fecha de borrado  del cookie. Aqui van dos rutinas para leer y crear cookies:<br><br>'+
'nombre el nombre del dato y valor su contenido, días es el número de días que debe permaneser el cookie en la máquina del usuario<br>'+
'<p>function creaCookie(nombre, valor, dias)'+
'{<br>'+
'var expira, tiempo; <br>'+
'var dato = nombre+"="+valor;<br>'+
'if (dias)<br>'+
'	{<br>'+
'	expira = new Date();<br>'+
'	tiempo = expira.getDate()+dias;<br>'+
'	expira.setDate(tiempo);<br>'+
'	dato = dato + "; expires="+expir.toGMTString()+";";<br>'+
'	}<br>'+
'document.cookie=dato;</p>'+
'Y esta permite leer un cookie dado su nombre<br><br>'+
'function leeCookie(valor)<br>'+
'{<br>'+
'var dato;<br>'+
'var plant = new RegExp("("+valor+"=)([^;]*)(;*)");<br>'+
'dato = document.cookie.search(plant);<br>'+
'if (dato>=0)<br>'+
'	return RegExp.$2;<br>'+
'else <br>'+
'	return null;<br>'+
'}<p>'+
'Para crear una cookie con el valor del campo cNombre de un formulario:'+
'<p>creaCookie("cNombre", document.forms.form1.cNombre.value, 1)<p>'+
'Y para leerlo en el mismo campo'+
'<p>document.forms.form1.cNombre.value = leeCookie("cNombre")</p>'+
'Hay que tener en cuenta que las cookies están limitadas a 20 y un tamaño máximo de 4Kb. '+
'<br>');
//Pregunta 35
preguntas.creapregta('Me gustaría saber como puedo redireccionar una página web a una    dirección en concreto, pero que en la barra de direcciones se muestre otra distinta');
preguntas.crearespta(35,
'Una forma sería usar una página con dos frames, digamos superior y principal, uno de '+
'ellos de altura igual a cero. Al cargar la página se verá el contenido del otro frame '+
'pero la barra de dirección mostraría la URL de la página que contiene al frameset '+
'Por ejemplo si la página digamos padreframes.htm contiene ' +
'<p>&lt;frameset rows="0,*" frameborder="NO" border="0" framespacing="0"&gt;<br>'+ 
'&lt;frame name="superior" scrolling="NO" noresize src="" &gt;<br>'+
'&lt;frame name="principal" src="frameprincipal.htm"&gt;<br>'+
'&lt/frameset&gt;</p>'+
'Al llamar a padreframes.htm en el explorador se verá la página frameprincipal.htm mientras '+
'que la barra de direcciones mostrará framepadre.htm.<br>Pero ojo en el código fuente de'+
'la página se podrán leer las direcciones de cada frame.<br>');

//Pregunta 36
preguntas.creapregta('¿Cómo conseguir que una capa &lt;DIV&gt; se centre verticalmente de manera automática incluso cuando movamos la barra de desplazamiento?');
preguntas.crearespta(36,
'La solución es actualizar la posición del bloque DIV modificando la coordenada vertical (style.top) en la misma cantidad que desplazamos la pantalla mediante la barra de desplazamiento, actualización que se debe hacer justo en el momento de realizar el desplazamiento. Para ello usamos el evento <b>onscroll</b> aplicado al elemento <b>body</b> y al que le vinculamos la función que modifica la posición del bloque.  Evidentemente el bloque DIV deberá tener posicionamiento absoluto. El código necesario sería el siguiente:<br>'+
'function centrar(idbloque)<br><br>'+
'{<br>'+
'var altoVent = document.body.clientHeight;<br>'+
'var anchoVent = document.body.clientWidth;<br>'+
'var despVert = document.body.scrollTop;<br>'+
'var despHoriz = document.body.scrollLeft;<br>'+
'var bloque = document.all[idbloque];<br>'+
'var altoBlq = parseInt(bloque.style.height);<br>'+
'var anchoBlq = parseInt(bloque.style.width);<br>'+
'bloque.style.top = parseInt((altoVent- altoBlq)/2+despVert);<br>'+
'bloque.style.left = parseInt((anchoVent- anchoBlq)/2+despHoriz);<br>'+
'}<br>'+
'Este ejemplo también contempla la posiblidad del scroll horizontal. La parte HTML es la siguiente:<br><br>'+
'&lt;body onload="centrar(\'IDcapa\')" onscroll="centrar(\'IDcapa\')"&gt;<br>'+
'&lt;DIV id="IDcapa" stye:"position:absolute; width:110px; height: 110 px"&gt;<br><br>'+
'El funcionamiento es simple: el evento <b>onload</b> hace que cuando se cargue la página se centre la capa (esto es para ahorrarnos el trabajo de colocarla a mano), el segundo evento es el clave: cuando se realiza un scroll entra en funcionamiento la función centrar y repone la capa en su lugar.<br>'+
'Evidentemente esto, como tantas cosas mas, no funciona con Netscape 4.');
//Pregunta 37
preguntas.creapregta('Tengo una capa con scroll lateral y una tabla en su interior que sobrepasa el tamaño de la capa ¿Como hacer para imprimir todo el contenido, incluso lo que no se ve?');
preguntas.crearespta(37,
'Puedes usar el método <b>print( )</b> del objeto <b>window</b> que imprime toda la página, pero con un pequeño ardid: antes de imprimir modificas la propiedad <i>overflow</i> de la capa reponiéndolo despues de que se imprima la página1. Algo así:<br>'+
'function imprimir(idencapa)<br>'+
'{<br>'+
'document.all[idencapa].style.overflow = "visible";<br>'+
'print();<br>'+
'document.all[idencapa].style.overflow = "auto";<br>'+
'}<br>'+
'En la página colocas el botón para imprimir con el evento onclick vinculado a esta función:'+
'<br><br>&lt;a href="#" onclick = "imprimir(); return false"&gt;Imprimir&lt;/a&gt;<br><br>'+
'La sentencia return false se usa para evitar la acción predeterminada del evento onclick.');
//Pregunta 38
preguntas.creapregta('¿Cómo hago para ocultar los mensajes en el estatus al direccionar a otra página, a otra subrutina sin que aparezca la nueva direccion?');
preguntas.crearespta(38,
'Asignando a la propiedad status del objeto window una cadena de caracteres con el texto '+
'que quieras que aparezca en lugar del usado por defecto (la dirección del enlace). La '+
'cadena que asignes puede ser una cadena vacía con lo que la barra de status aparecería en '+
'blanco. La vinculación al evento <b>onmouseover</b> modifica la barra de estado al pasar '+
'el ratón sobre el enlace y la del evento onclick la modifica al pulsar el botón activo. '+
'Por ejemplo:<br><br>'+
'&lt;a href="direccion.htm" onclick = "window.status=\'texto\'" <br>'+
'onmouseover="window.status=\'texto\' return true"&gt;Ir a direccion&lt;/a&gt;'+
'<br><br>Puedes cambiar texto por la frase que se te ocurra o por un espacio en blanco.');
//Pregunta 39
preguntas.creapregta('¿Me podrían decir como puedo verificar si el dato introducido es un texto (solo letras)?');
preguntas.crearespta(39,
'Usando las expresiones regulares. Para este caso una función sería:<br><br>'+
'function esTexto(dato)<br>'+
'{<br>'+
'var patron = /[^a-z,^ñ,\s]/gi<br>'+
'return (dato.match(patron)==null)<br>'+
'}<br><br>'+
'Esta función devuelve <b>true</b> si dato sólo contiene letras (^a-z,^ñ) o espacios (\\s) '+
'mientras que si en dato existe cualquier otro carácter (incluidos signos de puntuación, '+
'dígitos o vocales acentuadas) devuelve <b>false</b>. Si queremos incluir como válidos '+
'los signos de puntuación y los acentos debemos añadirlos al patrón, que quedaría<br><br>:'+
'var patron = /[^a-z^ñ\s,;:\.áéíóúü]/gi<br><br>'+
'Si quieres saber mas sobre expresiones regulares tienes información en la sección '+
'dedicada a <b><a href="../jsgram/expregulares.htm">operadores</a></b> y al '+
'<b><a href="../jsobjetos/obj_expreg.htm">objeto Regular Expresion</a></b>.');
//Pregunta 40
preguntas.creapregta('¿Como puedo verificar que el dato introducido es un flotante válido (numero con 2 decimales maximo)?');
preguntas.crearespta(40,
'Al igual que en la pregunta 40 éste es un trabajo para las expresiones regulares, en este '+
'caso el patrón deberá responder a una cadena de dígitos que debe terminar en un punto '+
'seguido de dos dígitos como máximo. Una función válida puede ser:'+
'<pre>function esFlotante(dato)<br>'+
'{<br>'+
'var devolver;<br>'+
'var entero = /^\\d+$/;<br>'+
'var real = /^\d+\\.\\d{1,2}$/;<br>'+
'if ( dato.search(entero)>=0 || dato.search(real)>=0 )<br>'+
'   devolver = true;<br>'+
'else<br>'+
'   devolver = false;<br>'+
'return devolver;<br>'+
'}</pre>'+
'Se usa un patrón para detectar si el contenido del argumento dato es entero y otro para ver si es real (con 2 decimales como máximo). La función devuelve true para números enteros o reales con 2 decimales o menos');
//Pregunta 41
preguntas.creapregta('¿Como hago para validar los navegadores Microsoft >=4 y Nescape>2, y si el usuario no cumple con éstas condiciones que me habra una venta con la página de microsoft?');
preguntas.crearespta(41,
'El siguiente es uno de los métodos posibles:<br><br>'+
'var navegador = window.navigator.appName;<br>'+
'var version = parseInt(window.navigator.appVersion);<br>'+
'if ((navegador.indexOf("Microsoft")>=0 && version < 4) ||<br>'+
'(navegador.indexOf("Netscape")>=0 && version < 3))<br>'+
'&nbsp;&nbsp;&nbsp;location.href="http://www.microsoft.com"<br><br>'+
'Este código enviará los exploradores microsoft de versión menor que 4 y netscape menor que 3 a la página de microsoft.<br>'+
'También puedes usar el <a href="../scripts/navegadores1.htm">objeto navegador</a> que tienes en la sección de ejemplos, es muy simple y contempla otros navegadores.');
//PREGUNTA 42
preguntas.creapregta('¿Como puedo cambiar el color de la letra cuando el mouse se posiciona arriba de ella?');
preguntas.crearespta(42, 
'Usando los eventos onMouseOver para poner el color y onMouseOut para volver al color '+
'original. Es bien fácil, en la sección Head pones el código Javascript<br>'+
'&lt;script language="JavaScript"&gt;<br>'+
'function cambColor(elem, codcolor)<br>'+
'{<br>'+
'    elem.style.color=codcolor<br>'+
' }	<br>'+
'&lt;/script&gt;<br>'+
'En el cuerpo de la página colocamos el enlace con los eventos correspondientes<br>'+
'&lt;span id="enl1" <br>'+
'onMouseover="cambColor(this,\'red\')" <br>'+
'onMouseOut="cambColor(this,\'\')"&gt;<br>'+
'El texto a resaltar&lt;/span&gt;<br>'+
'Y listo. Este método sirve para cambiar cualquier propiedad del texto, algo que sólo es posible en MSIE. Si quieres usarlo en un enlace en lugar de span usas la etiqueta de'+
' enlaces:<br><br>'+
'&lt;a href="direccion.htm" id="enl1" <br>'+
'onMouseover="cambColor(this,\'red\')" <br>'+
'onMouseOut="cambColor(this,\'\')"&gt;<br>'+
'El texto a resaltar&lt;/span&gt;<br><br>'+
'Así de fácil. Incluso podrías colocar el cuerpo de la función en la asignación del evento<br><br>'+
'...onmouseover="this.style.color=\'red\'"<br><br>'+
'pero creo recomendable usar llamadas a funciones que facilitan ampliar el código o hacerle modificaciones.');
//PREGUNTA 43
preguntas.creapregta('¿Cómo puedo lograr disponer el tamaño del explorador al tamaño que quiero (800 x 600) al momento de que el usuario entre en mi página?, es decir, que mi página se vea a esa resolución sea quien sea el usuario, colocarle ese tamaño determinado.');
preguntas.crearespta(43, 
'Muy fácil, usando el método resizeTo(ancho, alto) aplicado a la ventana que quieras redimensionar. La sentencia:<br><br>'+
'&lt;script language="Javascript"&gt;<br>'+
'window.resizeTo(800, 600)<br>'+
'&lt;/script&gt;<br><br>'+
'lograría el tamaño que quieres. El código lo puedes colocar en la cabecera de la página tal como figura en el ejemplo.<br>');

//PREGUNTA 44
preguntas.creapregta('¿Como puedo hacer para que se envien automaticamente los valores de un formulario nada más que se abra la página que lo contiene? Osea, sin necesidad de apretar el botón submit');
preguntas.crearespta(44, 
'Sitúa un evento onload en el cuerpo (body) del documente, ese evento deberá ejecutar el envío del formulario como si se pulsra el botón enviar:<br><br>'+
'&lt;body onload="document.forms.formulario.enviar.click()&gt;<br><br>'+
'Mientras que en el campo action del formulario pondrás el consabido mailto:<br><br>'+
'&lt;form name="formulario" method="post" action="mailto:email@server.com"&gt;<br><br>'+
'Donde email@server.com será la dirección a la que quieras que sea enviado el formulario. Est sólo es válido tanto con MSIE como con Netscape');

//PREGUNTA 45
preguntas.creapregta('A partir de un JavaScript hice aparecer una nueva ventana del Explorador, con un form de consultas. ¿Cómo puedo hacer que al presionar el botón enviar también se muestre un mensaje y se cierre esta nueva ventana?');
preguntas.crearespta(45, 
'Una forma es colocar en el evento onsubmit un alert y un temporizador para el cierre de la ventana.<br><br>'+
'&lt;form name="form1" action="mailto:email@serv.com <br>'+
'onsubmit="return enviar()"&gt;<br><br>'+
'La función enviar será algo así como<br><br>'+
'function enviar()<br>'+
'{<br>'+
'alert("Gracias por colabarar con nosotros")<br>'+
'setTimeout("window.close()", 1000)<br>'+
'}<br><br>'+
'Tras pulsar el botón Submit la ventana se cerrará de inmediato. No olvides poner al final de la función enviar <b>return true</b>, esta función también puedes usarla para validar los datos del formulario que sólo será enviado si el valor devuelto es true.');

//PREGUNTA 46
preguntas.creapregta('A partir del método location del objeto window, ¿cómo puedo redirigirme a un marcador dentro de la página que estoy cargando?');
preguntas.crearespta(46, 
'Para cambiar de dirección basta con colocar en location la nueva URL a la que queremos llegar, en esa dirección podemos usar el atributo <b>hash</b> para dirigirnos a un anchor dentro de la nueva página. Si la página destino, por ejemplo, nuevapag.htm contiene un anchor como<br><br>'+
'&lt;A name="marca1"&gt;<br><br>'+
'Podemos acceder a esa posición en la página colocando en location<br><br>'+
'location = "nuevapag.htm#marca1"<br><br>'+
'Es decir exactamente igual que haríamos en un link.');

//PREGUNTA 47
preguntas.creapregta('He creado una barra de navegación con texto desplegable, usando javascript y quiero colocarla en el Borde superior compartido. Cuando la coloco en las páginas se muestra en forma diferente. Qué otra forma de colocarla en todas las páginas tengo, sin tener que escribirla en todas?');
preguntas.crearespta(47, 
'Cuando tenemos un menú desplegable en un frame, las ventans que se despliegan al activar el menú deberán ser creadas y abiertas en la ventana del frame principal. No sé como funciona tu menú desplegable, pero supongo que el texto desplegable lo hará con alguna instrucción tipo<br> objeto.style.visibility = true;<br> Pues bien este objeto deberá estar en el frame principal y esa instrucción se convertiría en algo como<br>'+
' venppal.objeto.style.visibility = true; <br>'+
'donde ventppal es la ventana del frame principal, a la que debe pertenecer la capa que contiene el texto desplegable.<br>'+
'Si no quieres usar frames la única manera que se me ocurre es colocar en los body de tus páginas un onload = "activarmenu()", por ejemplo, donde activar menú es el código Javascript que crea y manipula el menú. Todas las páginas deberán tener enlazdo un archivo con ese código mediane el conocido<br>'+
'&lt;script language="Javascript" src = "menus.js"&gt;&lt/script&gt<br>'+
'situado en la sección Head de la página. Si quieres mira el objeto <a href=../casos/barramenus/barramenus.htm><b>menú desplegable</b></a> que se encuentra en esta web.<br>&nbsp;');

//PREGUNTA 48
preguntas.creapregta('¿De que forma puedo lograr este truco, por ejemplo ahi un mensaje que dice "no pases el cursor del rato por aqui" y si lo pasas te aparece un mensaje y si la cierras te aparece otro, otro etc.');
preguntas.crearespta(48,
'Este tipo de comportamientos se logra mediante los eventos de ratón como onmouseover, onmouseout, onclick, etc. Por ejemplo <br><br>'+
'&lt;a href="#" onmouseover="alert(\'Mensaje\')"&gt; No pases el ratón por aquí&lt;/a&gt;<br><br> Haría que al pasar el ratón sobre el link saltara la ventana alert.');

//PREGUNTA 49
preguntas.creapregta('¿Cómo puedo abrir una ventana popup sin menus, scrolls, con medidas definidas, y posicion definidas, mediante un boton de un archivo flash?');
preguntas.crearespta(49,
'El objeto window posee el método open para crear ventanas nuevas <br>'+
'  miventana = window.open(URL, titulo, caracts)<br>'+
'El primer argumento es la dirección de la página que aparecerá en esa ventana, el segundo es el nombre de la ventana y uede usarse como valor de un argumento TARGET en un link, el último se usa para indicar las características que ha de tener esa ventana, está formado por una lista de pares nombre=valor separada por comas. Estas características son:<br>'+
'directories=yes/no&nbsp;&nbsp;&nbsp;&nbsp;Muestra barra de vínculos<br>'+
'height = número&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Altura en puntos de pantalla<br>'+
'width =  número&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Anchura en puntos de pantalla<br>'+
'menubar= yes/no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Barra de menús<br>'+
'location=yes/no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Barra de direcciones<br>'+
'scrollbars=yes/no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Barras de desplazamiento<br>'+
'status=yes/no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Barra de estado<br>'+
'toolbar=yes/no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Barra de herramientas<br>'+
'left = número&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Posición horizontal<br>'+
'top = número&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Posición vertical<br>'+
'fullscreen=yes/no&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Pantalla completa<br>'+
'Estas características son válidas para MSIE, Netscape no presenta la última de ellas<br>');

//PREGUNTA 50
preguntas.creapregta('Tengo una pagina separada en tres frames en una de los frames tengo un boton que al apretarlo deberia de aparecer en los otros dos frames imagenes. La pregunta es ¿Cual es el codigo usado en java script o html que me permite realizar esta accion?');
preguntas.crearespta(50,
'Si tienes varios frames todos ellos serán hijos de una ventana principal y cada uno de ellos a su vez son un objeto window, con sus métodos y propiedades. Para referirte a un frame en concreto primero averiguas la ventana madre (parent) de todos y desde ella te refieres el frame en concreto usando un número de índice o el nombre asignado al marco. Por ejemplo:<br><br>'+
'madre = parent;<br>'+
'marco1 = madre.frames["mimarco1"]<br>'+
'marco2 = madre.frames["mimarco2"]<br>'+
'marco1.document.images["mimg"].src = "direccion.gif"<br>'+
'marco2.document.images["mimg"].src = "direccion.gif"<br><br>'+
'Se supone que los marcos sobre los que quieres actuar tienen como atributo name los valores marco1 y marco2:<br><br>'+
'&lt;frameset rows="80,*" cols="80,*" frameborder="NO" border="0"<br>framespacing="0"&gt;<br>'+ 
'  &lt;frame name="marcoesq" scrolling="NO" noresize src="logo.htm" &gt;<br>'+
'  &lt;frame name="marcosup" scrolling="NO" noresize src="pagsup.htm" &gt;<br>'+
'  &lt;frame name="marco1" scrolling="NO" noresize src="cont1.htm"&gt;<br>'+
'  &lt;frame name="marco2" src="cont2.htm"&gt;<br>'+
'&lt;/frameset&gt;<br><br>'+
'Como es lógico en las páginas de los marcos marco1 y marco2 deberá existir un elemento IMG con el ID correspondiente, <b>mimg</b> en este ejemplo.<br>&nbsp;');

//PREGUNTA 51
preguntas.creapregta('He visto en alguna pagina que pasas el cursor por un banner y como por arte de magia se te abre una ventana, quisiera saber como se hace');
preguntas.crearespta(51,
'En Javascript no existe la magia, aunque a veces parezca que los duendes actuen con magia de la negra, este efecto es bien simple: usas el evento onmouseover vinculandole una función window.open( ) (mira la pregunta 50). Para lograr compatibilidad con NS 4 pones en el banner un link y a ese link le colocas el atributo onmouseover. <br><br>'+
'&lt;a href="#" onmouseover = "abreventanta()"&gt;&lt;img src="banner"&gt;&lt;/a&gt;<br><br>'+
'Si no te importa que Netscape 4 no funcione con este efecto, puedes asignar el evento directamente a la imagen del banner.<br><br>'+
'&lt;img src="banner.gif" onmouseover = "abreventanta()"&gt;<br><br>'+
'La función abreventana() contendrá el código con el window.open() adecuado.<br>&nbsp;');
//PREGUNTA 52
preguntas.creapregta('¿Como hacer para desactivar el botón derecho del ratón?');
preguntas.crearespta(52,
'Típico: muchos ponéis imágenes en vuestras páginas y no queréis que nadie las copie para lo cual os gustaría desactivar el botón derecho del ratón. Bueno esto es posible, pero no se evita que copien el contenido de la página, basta ver el código fuente. Y una observación: las páginas colgadas en la red son para los visitantes y ese fuerte sentimiento de la propiedad va contra la filosofía reinante en la red, compartamos. <br>'+
'Bueno, al grano para anular el click derecho del ratón basta vigilar el evento onclick y en la función vinculada comprobar que botón se ha pulsado, en caso de que sea el derecho se emite un mensaje alert( ) y listo. En un ejemplo:<br><br>'+
'&lt;img src="mifoto.jpg" onclick = "vigilar(event)"&gt;<br><br>'+
'La función Javascript vigilar será<br><br>'+
'function vigilar(evnt )<br>'+
'{<br>'+
'if (evnt.button & 2)<br>'+
'&nbsp;&nbsp;alert("Botón inactivo.");<br>'+
'}<br><br>'+
'Para los otros botones basta saber que el izquierdo es el 1 y el central es el 4. Si se pulsan dos botones el código será la suma de los códigos individuales, así el botón derecho y central devolverá 6, por eso se usa el operador binario & (AND).<br>&nbsp');
//PREGUNTA 53
preguntas.creapregta('¿Cómo lograr que una página no se guarde en el caché del ordenador cliente?');
preguntas.crearespta(53,
'Teóricamente y según las especificaciones HTML 4 para esto se usa una etiqueta META en la sección HEAD de la página:<br>'+
'&lt;META http-equiv="Pragma" content="no-cache"&gt;<br>&nbsp;&nbsp;');
//PREGUNTA 54
preguntas.creapregta('¿Cómo forzar a que el explorador recargue una página desde el servidor en lugar de cargarla desde la caché?');
preguntas.crearespta(54,'Podríamos usar una etiqueta META para engañar al explorador haciéndole creer que la página ha caducado:<br>'+
'&lt;meta http-equiv="expires" content="01-01-1980"&gt;<br>'+
'O bien manualmente usando el método location.reload() o history.go(0). En el primer caso Microsoft admite el uso de un argumento que si es true asegura la recarga desde el servidor <br>&nbsp;&nbsp;');
//PREGUNTA 55
preguntas.creapregta('Estoy mandando un correo desde un formulario, el problema es que cuando  hacen click en boton de enviar y finalmente manda el correo se regresa a la pagina de donde se mandaron los datos pero ésta sigue manteniendo los datos que se mandaron ¿que puedo hacer para que se limpie el formulario?');
preguntas.crearespta(55, 'Si se quiere hacer de manera manual basta con colocar un botón reset dentro del formulario:<br>'+
'&lt;input type="reset" name="Borrar" value="Borrar"&gt;<br>'+
'También podemos hacerlo de forma manual para ello colocamos un botón tipo Button (no submit) con un evento onclick ligado a una función que envía el formulario y luego borre los campos, bien usando el botón Reset o bien por código:<br>'+
'&lt;form name="form2" method="post" action="mailto:no2@c.com" <br>enctype="text/plain"&gt;<br>'+
'&nbsp;&nbsp; &lt;input type="text" name="texto1"&gt;<br>'+
'&nbsp;&nbsp; &lt;input type="Button" name="Enviar" value="Enviar" onclick="enviar()"&gt;<br>'+
'&nbsp;&nbsp; &lt;input type="reset" name="Borrar" value="Borrar"&gt;<br>'+
'&lt;/form&gt;<br>'+
'La función enviar(), usando el botón reset desde programa, sería:<br>'+
'function enviar()<br>'+
'{<br>'+
'document.forms.form2.submit();<br>'+
'document.forms.form2.Borrar.click();<br>'+
'}<br>'+
'La función enviar(), usando el botón reset desde programa, sería:<br>'+
'function enviar()<br>'+
'{<br>'+
'document.forms.form2.submit();<br>'+
'document.forms.form2.texto1.value = "";<br>'+
'}<br>&nbsp;&nbsp;');




