Versión Javascript del navegador. Definición de un navegador en JavaScript con código de ejemplo

Escucha, te doy una lección: los guiones son geniales. Tú lo sabes, yo lo sé, en definitiva, lo sabemos. ¡Dame la instalación! Exitosamente. Ahora hablemos de ellos: nuestros guiones favoritos. Es bueno esculpir algunas cosas escritas en Java con tus propias manos y dejar que tu vecino cojo luche, y mientras lo mira, dale una patada. Solo hay un error: en el camino, ya se ha inventado todo lo interesante en materia de secuencias de comandos. Ya es complicado ofrecer algo radicalmente nuevo (al menos para mí), mejor ir a tomar una cerveza. Por otro lado, es fácil encontrar un montón de cosas secundarias que, tras un examen más detenido, se reducirán a una acumulación de las mismas. metodos basicos. Y esto está mal: nadie necesita lo secundario en sí mismo. Finalmente (¡no al final, sino al final!)...

Escucha, te estoy dando una lección: los guiones son geniales. Tú lo sabes, yo lo sé, en definitiva, lo sabemos. ¡Dame la instalación! Exitosamente. Ahora hablemos de ellos: nuestros guiones favoritos. Es bueno esculpir algunas cosas escritas en Java con tus propias manos y dejar que tu vecino cojo luche, y mientras lo mira, dale una patada. Solo hay un error: en el camino, ya se ha inventado todo lo interesante en materia de secuencias de comandos. Ya es complicado ofrecer algo radicalmente nuevo (al menos para mí), mejor ir a tomar una cerveza.

Por otro lado, es fácil encontrar un montón de cosas secundarias que, tras un examen más detenido, se reducirán a una acumulación de los mismos métodos básicos. Y esto está mal: nadie necesita lo secundario en sí mismo. Finalmente (¡no al final, pero sí al final!), llegó una “visión creativa”: si no puedes exprimir nada dentro del documento, entonces debes cambiar a alta calidad. nuevo nivel manipulación de la propia ventana del navegador. Primero, un poco de información para aquellos que lo olvidaron (o no lo sabían). EN modelo de objeto navegadores modernos (por modernos me refiero Explorador de Internet y Netscape Navigator) existen dos métodos muy interesantes: window.resizeTo (x,y) y window.moveTo (x,y), que prometen simplemente enormes oportunidades. El primer método cambia el tamaño de la ventana de visualización del navegador para tamaños especificados(es decir, x por y píxeles), y el segundo mueve la ventana misma, colocando el lado izquierdo esquina superior a un punto con coordenadas x horizontalmente e y verticalmente. Por lo tanto, utilizando estos dos métodos correctamente, puedes lograr fácilmente resultados muy efectos interesantes, que literalmente derriba al espectador desprevenido.

Primero, veamos un script simple que es responsable de mover la ventana del navegador por el escritorio y reflejarla desde los "bordes" de la pantalla:

Ventana estilo Xenix

// Inicia la función de bloque de script move_the_window())( // Nuestra función inicial window.resizeTo(screen. width/2, screen, height/2);- // Primero reducimos la ventana a la mitad del escritorio window.moveTo( 1,1) ; // Ahora lo colocamos en la esquina superior izquierda de la pantalla var x=1; // Esta será nuestra coordenada X al principio igual a uno var y=1; la coordenada será igual a uno var dx=7; // Desplazamiento a lo largo de X var dy=10 // ... y a lo largo de Y move() // Ahora llama a la función que moverá la ventana function move())( / / .Declarar la función while(true)( // Declarar bucle sin fin if(x>=(screen.width) || x=(screen.height) || y ¡javascript es genial! Una vez que la página está completamente cargada, se llama a la función move_the_window. Declara todas las variables necesarias y coloca la ventana en la esquina superior izquierda del escritorio. Los métodos screen.width y screen.height nos devuelven los valores (ancho y alto) del escritorio, y, ya conociéndolos, reducimos la ventana a la mitad.

Ahora pasemos a la función de movimiento. Dado que todas las acciones aquí se realizan dentro de un bucle infinito, la ventana se mostrará continuamente en la pantalla.

Detectar navegador usando javascript

Tratando de pasarlo administrador de tareas conducirá a interesantes efectos visuales(Te aconsejo que compruebes propia experiencia). En caso de que desee que se ejecute el bucle una cierta cantidad una vez, reemplazar mientras declaración en mientras (var i< твое число) и добавь в конце цикла оператор i++. С помощью метода resizeTo можно делать довольно любопытные вещи. Посмотри, как можно сжать окно до размеров заглавной рамки и заставить все это, как обычно, бегать по экрану:

Desarrollo del tema

// Inicia la función de bloque de script move_the_windows())( // Nuestra función inicial window. resizeTo(screen.width, 25); // Reducir la ventana número 1 window.moveTo(0,1); // Ahora colócala en el pantalla de la esquina superior izquierda window2 = orep(\"\", null); // Crea un objeto de la segunda ventana window2.document.write(\" Window N2\" // Escribe el título en él window2.resizeTo( screen.width,25 ); // Reducirlo y window2.moveTo(0, screen.height-25); // colocarlo en la parte inferior de la pantalla var dy1=2; ventana superior vardy2=-2; //... y para el inferior var y1 = 1; // Coordenada Y de la ventana superior var y2 = screen.height-25; // y coordenada Y del movimiento inferior(); // Ahora llama a la función que moverá ambas ventanas function move())( // Declara la función while(true)( // Declara un bucle sin fin if (y1>=(screen.height) || y1 =(screen. altura) || y2 //después de cargar el documento, se verificará la versión del navegador //y se tomarán algunas acciones...

. . .

función check_version() (

< ! --

var str = navegador. versión de la aplicación;

var reg = /MSIE[\s]([\d])/i ;

var coincide = str . partido(reg);

if (str . indexOf ("MSIE") > 0 && coincide con [ 1 ]< "7" ) {

//por ejemplo, muestra un bloque con un mensaje como “estás usando una versión antigua

var obj = documento. getElementById("pistaIE");

obj. estilo. mostrar = "bloque";

//-->

< / head >

//después de cargar el documento, se comprobará la versión del navegador

//y se toman algunas acciones

< body onload = "check_version();" >

. . .

En PHP, puedes acceder a los encabezados enviados por el navegador usando la función getallheaders(), te devolverá matriz asociativa, donde el elemento contendrá información sobre el navegador.

Entonces descubrimos que hay al menos 2 formas. Soy partidario de que todo el trabajo no relacionado con la seguridad que se pueda realizar con bastante facilidad en el lado del cliente se realice en la máquina del cliente. Hoy en día resulta frecuente que los recursos máquinas cliente exceden significativamente las capacidades de los servidores web virtuales dedicados. Así que déjenlos trabajar lo mejor que puedan :).

Por otro lado, es posible que los javascripts no funcionen para el cliente en absoluto, y luego verificar en el servidor es la única forma. Este fenómeno es muy raro, aunque no tengo estadísticas exactas.

Aquí también hay trampas. Después de todo, si no se tienen en cuenta mis preferencias personales, realizar la verificación en el lado del servidor sería un enfoque fundamentalmente más correcto. Aunque sólo sea porque será imposible determinar la versión del navegador en algunos clientes antiguos como mostré en el ejemplo. Y el guión será más complejo. uno de trampas Puede haber un sistema para almacenar en caché las páginas del sitio (como, por ejemplo, Drupal). Una vez que haya determinado en el lado del servidor que el cliente es adecuado o, por el contrario, no adecuado para mostrar el sitio, la página con este resultado se mostrará a todos los demás clientes anónimos hasta que expire la vida útil de la caché. En tales casos, javasctipt es la única opción adecuada.

Entonces, hemos visto que cada navegador tiene sus propias características. ¿Es realmente tan importante? Muy importante. Si carga una página web con un script que contiene propiedades que el navegador no admite, el usuario simplemente no verá su intención. Hay dos enfoques para resolver el problema de compatibilidad del navegador. El primer enfoque es un poco tedioso. El desarrollador escribe dos opciones para diferentes navegadores y luego, basándose en la información recibida, dirige al usuario a la página web deseada. Aquí pequeño ejemplo tal escenario (Listado 1).

Listado 1. Redirigir al usuario a la página web deseada

var ver = navigator.appVersion;

if (ver.indexOf("MSIE") != -1) ( alert ("Estás ejecutando Internet Explorer"); // window.location.href="ie.htm"; ) else alert ("Estás ejecutando Firefox "); // ventana.ubicación.href="firefox.htm"; Ofrecí un escenario simplificado, asumiendo que solo hay dos navegadores en el mundo. EN vida real Por supuesto, será necesario algo de trabajo; Además, el escenario considerado tiene un inconveniente: requiere la creación de páginas web adicionales para diferentes navegadores. El segundo enfoque es utilizar la declaración condicional if. Veamos un ejemplo de por qué usaremos la propiedad appName. En Internet Explorer al llamar de esta propiedad devuelve cadena internet Explorer, por el navegador

Firefox - Netscape (Listado 2).

Listado 2. Otra forma de detectar el navegador. var errorText = "No puedo determinar la profundidad del color";

if (navigator.appName.indexOf("Netscape") != -1) if (navigator.appVersion.substr(0, 1) > 3) document.write("Profundidad de color: " + window.screen.pixelDepth) else documento .write(textoerror);

if (navigator.appName.indexOf("Microsoft") != -1) if (navigator.appVersion.substr(0, 1) > 3) document.write("Profundidad de color: " + window.screen.colorDepth) else documento .write(textoerror);

Lo sentimos, su navegador no soporta ejecutando scripts, por lo que no puedo determinar la configuración de su monitor.

Tenga en cuenta que realmente no necesitamos recordar toda la cadena devuelta. Usando la función indexOf, determinamos la posición en una línea de una palabra. Esto es suficiente para que el guión funcione. No olvide que Mozilla Firefox no es el único con el nombre de una aplicación Netscape. Existe, por ejemplo, también el navegador Netscape Navigator (¿todavía existe uno???).

Aunque acordamos que todos los ejemplos de mi blog se prueban solo en Internet Explorer y Mozilla Firefox, todavía daré un pequeño ejemplo de cómo determinar la versión del navegador que se está utilizando. Un poco de teoría. escribir completo función universal, que determina el navegador instalado en el usuario, es imposible. Hay demasiados y cada desarrollador de navegador tiene su propia visión del modelo de objetos. Puedes centrarte sólo en los más populares y descuidar el resto.

Entonces, Internet Explorer usa construcciones como document.aii en su modelo y Netscape Navigator usa document.layers. Ambas construcciones no son estándar, así que evite usarlas en sus páginas web. Versiones antiguas navegador ópera También cometieron un error con el diseño no estándar de document.aii.item. Pero últimas versiones Todos estos navegadores han ido un paso más allá y admiten la construcción document.getEiementByid correcta (Mozilla Firefox inicialmente intentó seguir los estándares). Es por eso que muchos escenarios usan código como este (Listado 3).




Arriba