Regresar   Foros del Web > Programación para sitios web > Javascript

El registro es Gratis en Foros del Web
Respuesta
 
Herramientas Buscar en Tema Desplegado
Antiguo 26/03/08, 08:29:11   #1 (permalink)
goreplus ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 8
goreplus is offline  
Hola tengo un fallo con script de capas

Tengo dos scripts que me dan fallo cuando los pongo en la misma web.

El primero es para sacar un <div> flotante sobre el raton con informacion, cuando tienes el raton sobre un enlace.

Código:
<script language=javascript>
    // ********** Parte 1: Inicializar valores
      window.onload = init;
      MouseX=0;
      MouseY=0;
    // ********** Parte 2: Funciones
    
      // Función para capturar el evento "Mouse Move" (al moverse el mouse)
      function init() {
        if (window.Event) {
          document.captureEvents(Event.MOUSEMOVE);
        }
        document.onmousemove = getXY;
      }
      // Función que actualiza la posición del ratón
      function getXY(e) {
        MouseX = (window.Event) ? e.pageX : (event.clientX + document.body.scrollLeft);
        MouseY = (window.Event) ? e.pageY : (event.clientY + document.body.scrollTop);         

      }
      
      // Función que aparece y desaparece el cuadrito de la ayuda
      function  hint( id, status ) 
      {
          var htmObj = document.getElementById(id)
          if(!htmObj)  return ;
          htmObj.style.visibility = status ? 'visible' : 'hidden';
          htmObj.style.top = (MouseY+20) + 'px';
          htmObj.style.left = (MouseX+20) + 'px';
      }
  </script>

Y el siguiente es para tener un div flotante que se mueve con informacion.


Código:
<script LANGUAGE="JavaScript1.2">

/******************************************
* Imagen Flotante 2 Script - HTML.Dynamico 2001
* Mas Scripts y Recursos para tu web en:
* http://www.htmldynamico.cjb.net
******************************************/

var XX=20; // X position of the scrolling objects
var xstep=1;
var delay_time=60;

//Begin of the unchangable area, please do not modify this area
var YY=0;  
var ch=0;
var oh=0;
var yon=0;

var ns4=document.layers?1:0
var ie=document.all?1:0
var ns6=document.getElementById&&!document.all?1:0

if(ie){
YY=document.body.clientHeight;
point1.style.top=YY;
}
else if (ns4){
YY=window.innerHeight;
document.point1.pageY=YY;
document.point1.visibility="hidden";
}
else if (ns6){
YY=window.innerHeight
document.getElementById('point1').style.top=YY
}


function reloc1()
{

if(yon==0){YY=YY-xstep;}
else{YY=YY+xstep;}
if (ie){
ch=document.body.clientHeight;
oh=point1.offsetHeight;
}
else if (ns4){
ch=window.innerHeight;
oh=document.point1.clip.height;
}
else if (ns6){
ch=window.innerHeight
oh=document.getElementById("point1").offsetHeight
}
		
if(YY<0){yon=1;YY=0;}
if(YY>=(ch-oh)){yon=0;YY=(ch-oh);}
if(ie){
point1.style.right=XX;
point1.style.top=YY+document.body.scrollTop;
}
else if (ns4){
document.point1.pageX=XX;
document.point1.pageY=YY+window.pageYOffset;
}
else if (ns6){
document.getElementById("point1").style.right=XX
document.getElementById("point1").style.top=YY+window.pageYOffset
}

}

function onad()
{
if(ns4)
document.point1.visibility="visible";
loopfunc();
}
function loopfunc()
{
reloc1();
setTimeout('loopfunc()',delay_time);
}

if (ie||ns4||ns6)
window.onload=onad

</script>
El fallo es que cuando los pongo en el mismo documento, el primero script deja de funcionar correctamente y me muestra el div en la esquina superior derecha, en vez de encima del raton.

Me es muy importante el solucionar este enbrollo, gracias.

PD: si no puse el post donde deve. lo siento soy nuevo en el foro.

Un saludo y gracias
  Responder Con Cita
Antiguo 26/03/08, 09:12:15   #2 (permalink)
Colaborador
derkenuke tiene un muy buen nivel de karmaderkenuke tiene un muy buen nivel de karma
 
Registrado: oct 2003
Ubicación: self.location.href
Mensajes: 2.257
derkenuke is offline  
Re: Hola tengo un fallo con script de capas

Hola goreplus:

Lo que ocurre es que estás haciendo dos veces la asignación a window.onload, sobrescribiéndola siempre que ya está asignada.

Una manera cómoda y sencilla de hacer que funcione, sería haciendo una función que aúne a las dos:
Código PHP:
window.onload = function() {
  
init();     // primera parte
  
onad();     // segunda parte


Espero que funcione. Saludos.
__________________
Inténtalo y búscalo siempre antes de preguntarlo
  Responder Con Cita
Antiguo 26/03/08, 15:06:04   #3 (permalink)
goreplus ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 8
goreplus is offline  
Re: Hola tengo un fallo con script de capas

Cita:
Originalmente publicado por derkenuke Ver Mensaje
Hola goreplus:

Lo que ocurre es que estás haciendo dos veces la asignación a window.onload, sobrescribiéndola siempre que ya está asignada.

Una manera cómoda y sencilla de hacer que funcione, sería haciendo una función que aúne a las dos:
Código PHP:
window.onload = function() {
  
init();     // primera parte
  
onad();     // segunda parte


Espero que funcione. Saludos.
Pues la verdad, esque no hizo nada... pero gracias por las molestia.

El caso es que pienso que a lo mejor no lo puse donde debo.
Lo puse en la parte de ariba del primer script para que sea lo primero que lea pero no hay tu tia.

Un saludo y gracias :D.

PD: Se te ocure algo. Para amaestrar a estos dos div salvajes....??
  Responder Con Cita
Antiguo 26/03/08, 17:16:10   #4 (permalink)
Colaborador
derkenuke tiene un muy buen nivel de karmaderkenuke tiene un muy buen nivel de karma
 
Registrado: oct 2003
Ubicación: self.location.href
Mensajes: 2.257
derkenuke is offline  
Re: Hola tengo un fallo con script de capas

¿Puedes poner un documento lo más simple posible en donde tengan que trabajar los dos scripts a la vez? Tal vez así sea más fácil ayudarte y encontrar el fallo.

Saludos.
__________________
Inténtalo y búscalo siempre antes de preguntarlo
  Responder Con Cita
Antiguo 27/03/08, 03:22:34   #5 (permalink)
goreplus ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 8
goreplus is offline  
Re: Hola tengo un fallo con script de capas

Cita:
Originalmente publicado por derkenuke Ver Mensaje
¿Puedes poner un documento lo más simple posible en donde tengan que trabajar los dos scripts a la vez? Tal vez así sea más fácil ayudarte y encontrar el fallo.

Saludos.
El probrema esque los scripts no estan ni en el mismo documento.

Uno de ellos esta en el index y el otro lo llamo por include.
  Responder Con Cita
Antiguo 27/03/08, 04:04:23   #6 (permalink)
Mosiah tiene un saldo positivo de karma
 
Registrado: nov 2002
Ubicación: Vitoria - Madrid
Mensajes: 227
Mosiah is offline  
Re: Hola tengo un fallo con script de capas

Hola,

no te funciona ningún script o sólo te funciona 1 de los 2??

Salu2
  Responder Con Cita
Antiguo 27/03/08, 05:36:31   #7 (permalink)
goreplus ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 8
goreplus is offline  
Re: Hola tengo un fallo con script de capas

Cita:
Originalmente publicado por Mosiah Ver Mensaje
Hola,

no te funciona ningún script o sólo te funciona 1 de los 2??

Salu2
funcionar me funcionan los dos. Pero al ponerlos en la misma web no hacen lo que deben. Como dijo ariba(quizas no muy detalladamente).

Son 1 objetos flotantes.

Primero script:
El primero hace que aparesca un texto encima del raton cuando esta sobre un enlace (<a></a>).

(Cuando los pongo los dos): en vez de aparecer encima del raton aparece en la esquina superior dereza.


Segundo script:

Hace que aparesca un div que se mueve de ariba abajo en la parte de la dereza, con una noticia importante.

(Cuando los pongo los dos): Sigue funcionando sin problemas.

Espero que te sirva de algo para echame un cable. Un saludo y gracias. ;P
  Responder Con Cita
Antiguo 27/03/08, 08:32:33   #8 (permalink)
Colaborador
derkenuke tiene un muy buen nivel de karmaderkenuke tiene un muy buen nivel de karma
 
Registrado: oct 2003
Ubicación: self.location.href
Mensajes: 2.257
derkenuke is offline  
Re: Hola tengo un fallo con script de capas

Cita:
Originalmente publicado por goreplus Ver Mensaje
El probrema esque los scripts no estan ni en el mismo documento.

Uno de ellos esta en el index y el otro lo llamo por include.
Bueno, es posible que si no te tomas la molestia de hacer un nuevo documento de ejemplo para el foro nadie se tome la molestia de hacerlo por ti para ayudarte.

Pon las cosas lo más fáciles posible y tendrás mejores y más cantidad de respuestas que te solucionen el tema.
__________________
Inténtalo y búscalo siempre antes de preguntarlo
  Responder Con Cita
Antiguo 27/03/08, 09:59:09   #9 (permalink)
goreplus ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 8
goreplus is offline  
Parpadear Re: Hola tengo un fallo con script de capas

Cita:
Originalmente publicado por derkenuke Ver Mensaje
Bueno, es posible que si no te tomas la molestia de hacer un nuevo documento de ejemplo para el foro nadie se tome la molestia de hacerlo por ti para ayudarte.

Pon las cosas lo más fáciles posible y tendrás mejores y más cantidad de respuestas que te solucionen el tema.
Esto... Perdona?
Pero no se a que viene esa respuesta....

Solo comente un probrema y que me espricaran por que era o alguna foma de resolverlo.

Resulta que no hay archivo nuevo por que no hay mas codigo que comentar quel que dijo ariba, Lo mio es el php yo no uso java casi nunca y no se usarlo, asin que lo siento pero no puedo hacerlo mas facil, si supiera tal ves como funcionan los trozos de codijo no pediria ayuda.... Y he probado tu codigo de muchas maneras pero aun no se como se usa... Aun que ya te lo prengunte pero no me respondiste.

PD:Creo que eso estubo un poco fuera de tono, y relacionado con "molestias". Pero para mi el trabajo no es una moslestia es una obligacion...
PD2: Ya intente metiendo los dos codijos en el mismo <script> y tanpoco(con tu codigo como cabezera).

Un saludo y gracias por tu atencion.

Última edición por goreplus fecha: 27/03/08 a las 10:17:00.
  Responder Con Cita
Antiguo 27/03/08, 10:10:17   #10 (permalink)
Mosiah tiene un saldo positivo de karma
 
Registrado: nov 2002
Ubicación: Vitoria - Madrid
Mensajes: 227
Mosiah is offline  
Re: Hola tengo un fallo con script de capas

Tranquilo, no te lo tomes a mal creo que solo intentaba darte un consejo para que te podamos ayudar mejor.

Además de los scripts, podrías poner una página completa con la que podamos probar dichos scripts y así ver que es lo que puede fallar.

Animo y salu2
  Responder Con Cita
Antiguo 27/03/08, 10:29:28   #11 (permalink)
goreplus ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 8
goreplus is offline  
Re: Hola tengo un fallo con script de capas

No me lo tome a mal, ":P" es puebla de ello.


Este es el DIV del flotante..
Código:
<div id="point1" STYLE="position:absolute;visibility:visible;z-index:1;" >

</div>
y este el del la infomacion cuando pones el raton encima de un enlaze:

Código:
		<div id="ayuda<?=$gal?>" class="hint">

    		</div>
/**********CSS***********/
.hint 
{
	background-color: #d1e1a3;
	font-family: verdana,arial,helvetica;
	visibility: hidden;
	font-size: 8pt;
	position: absolute;
	padding: 1px 2px;
	border: 1px solid #8b01a4;
	color: #000000;
	width: 200px;
	left: 328px;
	z-index: 0; 
}

Última edición por goreplus fecha: 27/03/08 a las 10:37:09. Razón: fallo al poner [/code] puse [code]
  Responder Con Cita
Antiguo 27/03/08, 11:19:02   #12 (permalink)
Mosiah tiene un saldo positivo de karma
 
Registrado: nov 2002
Ubicación: Vitoria - Madrid
Mensajes: 227
Mosiah is offline  
Re: Hola tengo un fallo con script de capas

Hola,

he probado tu código, cambiando el onload del script que pongas último, como dijo derkenuke, por:

Código:
window.onload = function() {onad();init();};
y luego, en el enlace (no se si lo haras así en tu código):

Código:
onmouseover="hint('ayuda','visible')" 
onmouseout="hint('ayuda','')
y, para ie, si que me funciona, para ff no.

Tienes algún enlace a alguna página en la que te esté sucediendo este problema?

Salu2
  Responder Con Cita
Antiguo 27/03/08, 22:39:51   #13 (permalink)
Colaborador
derkenuke tiene un muy buen nivel de karmaderkenuke tiene un muy buen nivel de karma
 
Registrado: oct 2003
Ubicación: self.location.href
Mensajes: 2.257
derkenuke is offline  
Re: Hola tengo un fallo con script de capas

Cita:
Originalmente publicado por goreplus Ver Mensaje
Esto... Perdona?
Pero no se a que viene esa respuesta....
(...)
Creo que eso estubo un poco fuera de tono, y relacionado con "molestias". Pero para mi el trabajo no es una moslestia es una obligacion...
Hola de nuevo goreplus:

Te pido disculpas si has interpretado hostilidades en mi mensaje, sólo quería insistir en que si pones directamente un documento sobre el que podamos trabajar todos y probarlo, seguramente obtendrás más eficientemente lo que buscas (hablo del HTML+javascript, ya que el código que has puesto trabaja sobre unos elementos HTML determinados).


Bueno, al final da igual, ya he hecho yo los dos documentos. Para que me entendieras lo que yo te pedía era esto, los dos documentos por separado que querías juntar, o la unión que no te funcionara:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<
head>
<
meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<
meta name="Author" content="derkeNuke" />
<
title>Página nueva</title>
<
style type="text/css">
body {
    
font-size20pt;
}
.
hint 
{
    
background-color#d1e1a3;
    
font-familyverdana,arial,helvetica;
    
visibilityhidden;
    
font-size8pt;
    
positionabsolute;
    
padding1px 2px;
    
border1px solid #8b01a4;
    
color#000000;
    
width200px;
    
left328px;
    
z-index0
}
</
style>
</
head>

<
body>


<
div id="point1" STYLE="position:absolute;visibility:visible;z-index:1;" >hola</div>

<
a href="http://www.google.com" onmouseover="hint('ayuda2', true);" onmouseout="hint('ayuda2', false);">Google</a>
<
div id="ayuda2" class="hint">Irás a Google</div>

<
p>Lorem ipsum dolor sit ametconsectetuer adipiscing elitCurabitur tempusEtiam porttitor gravida erosSuspendisse potentiInteger conguemetus eget elementum accumsanpede elit sagittis orcinec tincidunt felis mauris quis tortorNullam non risus in orci tincidunt conguePhasellus fermentum tortor et massaEtiam liberoCras sed lectus fermentum elit venenatis suscipitNam mattis porttitor massaPhasellus et turpis quis tellus pretium laoreetNulla tinciduntdui eu blandit malesuadafelis nunc consequat eratsit amet malesuada pede libero ut nullaPraesent malesuada tellus rhoncus velitUt id nibhDonec sagittis varius nuncIn sapien arcutincidunt nonauctor euporta aliquamlacusMaecenas interdum purus quis nibhDuis tinciduntMaecenas eu nisi in risus tincidunt vulputateNullam pharetra ultricies pede.</p>

<
p>Nullam sollicitudin odio eget justoSed dolor erataccumsan sit ametultricies idiaculis acquamNunc mattis facilisis tellusCurabitur vel elitPhasellus orci nunccongue acsuscipit eufringilla eupurusDonec purusEtiam id nibh at nunc placerat auctorAliquam tempusdiam eu interdum suscipitodio sem lobortis mieu mattis libero leo nec tortorCurabitur purusIn vitae nisl vel lorem fringilla pellentesqueSuspendisse varius pulvinar dolorCurabitur sagittis neque in liberoIn dapibus massa eget odioNullam tristique ipsum et nullaUt commodoDonec vel tellusSuspendisse nisl mauristempus vitaecommodo sit ametcongue sit ametelitIn hac habitasse platea dictumst.</p>

<
p>Pellentesque bibendum ultricies pedeInteger erosNulla semper leo in orciNulla et nunc vitae justo iaculis commodoPhasellus pulvinar leo nec lacusVestibulum vel nullaSed felisPhasellus eget pede nec tortor porta rhoncusDonec non leoDonec pede.</p>

<
p>Vestibulum vitae maurisCras pulvinarInteger non pede convallis lorem interdum congueUt gravida ante vitae velitVestibulum ut nibh et purus consectetuer hendreritAliquam laoreet pulvinar nequeMaecenas dapibus elit ut nullaPraesent dignissim dui eget arcuVivamus arcu estaliquam eufeugiat avolutpat aterosDonec a nulla nec lectus venenatis aliquamProin consectetuer pretium anteMauris blandit felis id nunc pharetra variusMorbi nec sem et massa suscipit condimentumAenean sem dolorcongue aclaoreet velvarius aestCurabitur sollicitudin pulvinar felis.</p>



<
script type="text/javascript">
<!--


// escribir en el documento una ristra (x)html fuera de tiempo de ejecución.
function e(q,sinBR) {
    var 
elDIV document.createElement("DIV");
    if(
q==undefinedq="";
    if(!
sinBRq+="<br/>";
    
elDIV.innerHTML q;
    for(var 
a=0elDIV.childNodes.length>aa++) {
        
document.body.appendChildelDIV.childNodes[a].cloneNode(true) );
    }
}
// document.getElementById abreviado
function $(x) { return document.getElementById(x); }


/* **************************************************************************************** */
//            SCRIPT 1 PARA EL SCROLL AUTOMATICO DEL DIV

var XX=20// X position of the scrolling objects
var xstep=5;
var 
delay_time=60;

//Begin of the unchangable area, please do not modify this area
var YY=0;  
var 
ch=0;
var 
oh=0;
var 
yon=0;

var 
point1 document.getElementById("point1");

function 
reloc1() {
    
ch=document.body.clientHeight;
    
oh=point1.offsetHeight;
    if(
yon==0)    
        
YY-=xstep;
    else
        
YY+=xstep;
    if(
YY<0) {
        
yon=1;
        
YY=0;
    }
    if(
YY>=(ch-oh)) {
        
yon=0;
        
YY=(ch-oh);
    }
    
point1.style.left="90%";
    
point1.style.top=(YY+document.body.scrollTop) +"px";
}

function 
onad() {
    
YY document.body.clientHeight || window.innerHeight;
    
point1.style.top=YY +"px";
    
reloc1();
    
setInterval('reloc1()',delay_time);
}


/* **************************************************************************************** */
//            SCRIPT 2 PARA LAS AYUDAS EN LOS ENLACES

// ********** Parte 1: Inicializar valores
var MouseX=MouseY=0;

// ********** Parte 2: Funciones

// Función para capturar el evento "Mouse Move" (al moverse el mouse)
function init() {
    
document.onmousemove getXY;
}
// Función que actualiza la posición del ratón
function getXY(e) {
    
MouseX = (window.Event) ? e.pageX : (event.clientX document.body.scrollLeft);
    
MouseY = (window.Event) ? e.pageY : (event.clientY document.body.scrollTop);         
}

// Función que aparece y desaparece el cuadrito de la ayuda
function hintidestatus ) {
  var 
htmObj document.getElementById(id);
  if(!
htmObj)  return ;
  
htmObj.style.visibility estatus 'visible' 'hidden';
  
htmObj.style.top = (MouseY+20) + 'px';
  
htmObj.style.left = (MouseX+20) + 'px';
}

/* ************* IMPORTANTE, ÉSTO HACE QUE FUNCIONE ******* */

window.onload= function() {
    
onad();
    
init();
}

// -->
</script>

</body>
</html> 

Bueno, tal y como te dije no puedes asignar a window.onload dos funciones diferentes, ya que sólo la última asignación es la que funciona. Lo que hacemos es borrar todas las asignaciones de window.onload y aclararlas todas en una misma función. Eso se hace al final, una vez tenemos las funciones claramente definidas.

También te tengo que decir que el script para controlar el div que se mueve es muy muy viejo, está desfasado y tiene en cuenta a netscape, que prácticamente no existe. Por eso y por código y propiedades no estándares es porque no funcionaba en Firefox. Lo he cambiado casi totalmente, me he tomado esa licencia.


No suelo hacer trabajo sucio por lo general, espero que mi esfuerzo se vea agradecido


Un saludo y suerte.
__________________
Inténtalo y búscalo siempre antes de preguntarlo
  Responder Con Cita
Antiguo 28/03/08, 05:02:12   #14 (permalink)
goreplus ha deshabilitado el Karma
 
Registrado: mar 2008
Mensajes: 8
goreplus is offline  
Re: Hola tengo un fallo con script de capas

Cita:
Originalmente publicado por derkenuke Ver Mensaje
Hola de nuevo goreplus:

Te pido disculpas si has interpretado hostilidades en mi mensaje, sólo quería insistir en que si pones directamente un documento sobre el que podamos trabajar todos y probarlo, seguramente obtendrás más eficientemente lo que buscas (hablo del HTML+javascript, ya que el código que has puesto trabaja sobre unos elementos HTML determinados).


Bueno, al final da igual, ya he hecho yo los dos documentos. Para que me entendieras lo que yo te pedía era esto, los dos documentos por separado que querías juntar, o la unión que no te funcionara:
Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd"
>
<
html xmlns="http://www.w3.org/1999/xhtml" xml:lang="es" lang="es">
<
head>
<
meta http-equiv="Content-type" content="text/html;charset=iso-8859-1" />
<
meta name="Author" content="derkeNuke" />
<
title>Página nueva</title>
<
style type="text/css">
body {
    
font-size20pt;
}
.
hint 
{
    
background-color#d1e1a3;
    
font-familyverdana,arial,helvetica;
    
visibilityhidden;
    
font-size8pt;
    
positionabsolute;
    
padding1px 2px;
    
border1px solid #8b01a4;
    
color#000000;
    
width200px;
    
left328px;
    
z-index0
}
</
style>
</
head>

<
body>


<
div id="point1" STYLE="position:absolute;visibility:visible;z-index:1;" >hola</div>

<
a href="http://www.google.com" onmouseover="hint('ayuda2', true);" onmouseout="hint('ayuda2', false);">Google</a>
<
div id="ayuda2" class="hint">Irás a Google</div>

<
p>Lorem ipsum dolor sit ametconsectetuer adipiscing elitCurabitur tempus<