Foros del Web » Programando para Internet » Javascript »

pequeñas dudas para empezar...

Estas en el tema de pequeñas dudas para empezar... en el foro de Javascript en Foros del Web. hola tios, mis preguntas son basicas y sencillas: - ECMAScript no tiene tipos de datos estrictos, pero lei en un libro que admite vinculacion temprana ...
  #1 (permalink)  
Antiguo 13/09/2008, 08:44
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Pregunta pequeñas dudas para empezar...

hola tios, mis preguntas son basicas y sencillas:
- ECMAScript no tiene tipos de datos estrictos, pero lei en un libro que admite vinculacion temprana y no se si es un error del libro o yo que no estoy muy enterado del tema..

-estas es un poco tonta: en una etiqueta <a href=""></a> es posible definir un evento click que funcione? es decir, probe lo siguiente:
<a href="" onclick="mifuncion()">Click</a>
y mi funcion nunca se ejecutaba por lo que cambie la etiqueta <a /> por una <span /> pero que no se si pierde accesibilidad a la hora de saber si es un link o no en caso que se utilice un navegador de texto (no se si me explico)
:S
  #2 (permalink)  
Antiguo 13/09/2008, 08:58
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: pequeñas dudas para empezar...

si que se puede:

Código PHP:
<a href="#" onClick="tufuncion()">lo que sea</a
o lo que es lo mismo:

Código PHP:
<a href="javascript:tufuncion()">lo que sea</a
  #3 (permalink)  
Antiguo 13/09/2008, 09:01
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: pequeñas dudas para empezar...

vale, es decir que hay que poner el comodin ese en href no? me puedes echar un cable con algo de explicacion de por que?

;)
  #4 (permalink)  
Antiguo 13/09/2008, 09:05
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 18
Respuesta: pequeñas dudas para empezar...

Hola, si lo que quieres es accesibilidad la segunda solución que te da Legoltaz no es aconsejables.

Si el usuario usa un navegador tipo texto javascript nunca se va a ejecutar. Los mótores de busqueda nunca indexaran ese vínculo.

Lo que puedes hacer es dejar que el vinculo haga algo por defecto en el caso de que el navegador no soporte Javascript y cancelar el evento en el caso de que si lo soporte.
  #5 (permalink)  
Antiguo 13/09/2008, 09:09
Avatar de Legoltaz  
Fecha de Ingreso: agosto-2008
Mensajes: 325
Antigüedad: 15 años, 8 meses
Puntos: 6
Respuesta: pequeñas dudas para empezar...

Si vas a añadirle una función a un elemento <a>, pues ese # hace que el href no te lleve a ningún lado, para que el evento onClick ejecute esa función.
  #6 (permalink)  
Antiguo 13/09/2008, 09:16
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: pequeñas dudas para empezar...

jseros, es decir, en caso de que en tenga:

<a href="cosa.php" onclick="funcion()">Click</a>

si el navegador admite javascript, el evento tiene prioridad sobre el atributo? y en caso de que no pues nada, se ejecutaria el atributo no?
  #7 (permalink)  
Antiguo 13/09/2008, 09:34
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 18
Respuesta: pequeñas dudas para empezar...

Hola anlhp.

No del todo. Cualquier navegador va a darle prioridad a la ación por defecto del vinculo que es ir a la dirección de su atributo href.

Te voy a mostrar 2 opciones:

Código HTML:
<a href="cosa.php" onclick="return funcion()">Click</a> 
donde la función tiene el siguiente código:

Código PHP:
function funcion()
{
  
//código cualquiera

  
return false;

Como puedes ver el onclick tiene como valo return funcion(). y la funcion como tal devuelve false. lo que va a suceder es que gracias a esta combinación se le dice al navegador que nunca se hizo clic sobre el vínculo y solo ejecuta la la función que deseemos.

Hay otra opción más accesible, usable y debería ser la que utilizaras. Es un poco más compleja pero espero que me comprendas algunas partes que son clave:

Código HTML:
<!--cambio el atributo onclick por un id-->
<a href="cosa.php" id="vinculoafuncion">Click</a> 
Código javascript:

Código PHP:

//la función sigue igual
function funcion()
{
  
//código cualquiera

  
return false;
}


//window.onload lo que hace es ejecutar una función
//cuando se termine de cargar la página. Es la versión no invasiva de onload
window.onload = function() {
    
/*
cuando se cargue la página asigne al evento click del  vinculo con id "vinculoafuncion" una funcion. Osea que cuando se haga clicl sobre el vinculo ejecute la funcion.

*/
   
    
document.getElementById"vinculoafuncion" ).onclick = function(){
       
/*
hago el llamado a la funcion y cancelo el evento del click 
ya que nuestra funcion devolvera false
*/
       
return funcion();
   
   }

Espero no ir muy rápido, puedes usar cualquiera de las dos, igual ambas son accesibles pero como se que eres nuevo sería bueno que usaras la primera pero que tuvieras en cuenta la segunda.

Exitos y si no comprender o necesitas más ayuda no dudes en consultarnos
  #8 (permalink)  
Antiguo 13/09/2008, 09:41
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: pequeñas dudas para empezar...

pues nada colegas, ya lo probare y les digo que tal todo, y si, soy un poco nuevo en esto y no me entero mucho jejeje.

saludos ;)
  #9 (permalink)  
Antiguo 13/09/2008, 10:20
Avatar de jseros  
Fecha de Ingreso: agosto-2008
Ubicación: Bogotá
Mensajes: 218
Antigüedad: 15 años, 8 meses
Puntos: 18
Respuesta: pequeñas dudas para empezar...

Bien prueba y no cuentas.

Por otro lado, por ahora ECMAScript no soporta la vinculacion temprana solo la tardía. Se supone que si sale ECMAScript 4, ya se inclurian términos como paquetes, namespaces y vinculación temprana entre otros.

La verdad suena muy bien, perpo por ahi leí que este último estandar esta a punto de ser cancelado para tomar una especificación alterna de Microsoft.

Hay que esperar...
  #10 (permalink)  
Antiguo 13/09/2008, 11:08
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: pequeñas dudas para empezar...

Hola:

En algún mensaje me pareció ver que era importante la accesibilidad, pero usar un tag "a" (sirve para anclar y enlazar) sin intención de anclar o enlazar lo encuentro poco semántico... si la intención es ejecutar cualquier función desde un evento determinado, tal vez el elemento más adecuado (también semánticamente) sea un botón (tag button), aunque cualquier elemento que admita eventos (click) podría valer. También ten en cuenta que a un botón puedes darle aspecto de enlace con estilos (y viceversa)

Otra cosa sería que se tratase un enlace condicionado (en este caso por la inhabilitación de javascript), aunque para los casos de no existir javascript existe la etiqueta noscript...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #11 (permalink)  
Antiguo 13/09/2008, 11:29
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: pequeñas dudas para empezar...

pues si puede sonar raro, pero es para unas pestañas, es decir, estoy tratando que mi aplicacion haga la menos cantidad posible de llamadas al servidor, por lo que tengo un iframe donde cargo por medio de javascript cada una de las opciones que me dan por ahora, mis tres pestañitas, ahora, si hago las pestañas solo con css resulta que tengo que tener tres paginas de inicio para lograr el efecto que quiero, por lo que utilizo javascript para lograr el efecto pero en una sola pagina, pero resulta que quiero que las pestañas sean anclas para que se sepa que cada una cargara una seccion diferente en la pagina (pero sin cargar la pagina completa que es lo que quiero) y asi es como llego al dilema de utilizar anclas pero que no me lleven a ningun lado, solo que sirvan de referencia a que si las tocas, algo en la pagina va a cambiar

se me entiende algo?
  #12 (permalink)  
Antiguo 13/09/2008, 11:46
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: pequeñas dudas para empezar...

Hola:

Tienes el concepto de ancla equivocado...

<a name="ancla">esto es un ancla</a>

<a href="#ancla">esto enlaza al ancla antes definido</a>

Son los ekemplos de uso en mi opinión correctamente semántico del tag a... si se quiere el aspecto de enlace, por la mano del cursor, se pone con estilos en cualquier tag...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #13 (permalink)  
Antiguo 13/09/2008, 11:49
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: pequeñas dudas para empezar...

hmm, entonces digamos, que para que un navegador me reconozca un link, no es obligatorio enlazarlo? pues mi problema empezo por ahi
  #14 (permalink)  
Antiguo 13/09/2008, 12:00
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: pequeñas dudas para empezar...

o bueno, ya que lo dices, al final termine haciendo esto:
pestaña:
<li>
<span
sytle="cursor:pointer" onclick="funcion_cargar_seccion_y_cambiar_estilo_d e_la_pestaña(this)"
>

Seccion1

</span>
</li>

y todo tiene la funcionalidad que quiero, pero es cuando surgia mi pregunta, a la hora de accesibilidad digamos para un ciego, el programa o navegador sabe reconocerme la pestaña como un ancla o 'algo' que es digamos 'accionable' que tiene 'funcionalidad '

:S
  #15 (permalink)  
Antiguo 13/09/2008, 12:03
Avatar de anlhp  
Fecha de Ingreso: agosto-2008
Mensajes: 121
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: pequeñas dudas para empezar...

perdon, el uso de this esta mal, ahora no recuerdo que ostias hice, pero bueno, es algo por el estilo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:48.