26/03/08, 08:29:11
|
#1 (permalink)
|
Registrado: mar 2008
Mensajes: 8
|
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
|
|
|
|
26/03/08, 09:12:15
|
#2 (permalink)
|
|
Colaborador
Registrado: oct 2003
Ubicación: self.location.href
Mensajes: 2.257
|
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
|
|
|
|
26/03/08, 15:06:04
|
#3 (permalink)
|
Registrado: mar 2008
Mensajes: 8
|
Re: Hola tengo un fallo con script de capas
Cita:
Originalmente publicado por derkenuke
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....??
|
|
|
|
26/03/08, 17:16:10
|
#4 (permalink)
|
|
Colaborador
Registrado: oct 2003
Ubicación: self.location.href
Mensajes: 2.257
|
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
|
|
|
|
27/03/08, 03:22:34
|
#5 (permalink)
|
Registrado: mar 2008
Mensajes: 8
|
Re: Hola tengo un fallo con script de capas
Cita:
Originalmente publicado por derkenuke
¿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.
|
|
|
|
27/03/08, 04:04:23
|
#6 (permalink)
|
Registrado: nov 2002
Ubicación: Vitoria - Madrid
Mensajes: 227
|
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
|
|
|
|
27/03/08, 05:36:31
|
#7 (permalink)
|
Registrado: mar 2008
Mensajes: 8
|
Re: Hola tengo un fallo con script de capas
Cita:
Originalmente publicado por Mosiah
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
|
|
|
|
27/03/08, 08:32:33
|
#8 (permalink)
|
|
Colaborador
Registrado: oct 2003
Ubicación: self.location.href
Mensajes: 2.257
|
Re: Hola tengo un fallo con script de capas
Cita:
Originalmente publicado por goreplus
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
|
|
|
|
27/03/08, 09:59:09
|
#9 (permalink)
|
Registrado: mar 2008
Mensajes: 8
|
Re: Hola tengo un fallo con script de capas
Cita:
Originalmente publicado por derkenuke
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.
|
|
|
|
27/03/08, 10:10:17
|
#10 (permalink)
|
Registrado: nov 2002
Ubicación: Vitoria - Madrid
Mensajes: 227
|
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
|
|
|
|
27/03/08, 10:29:28
|
#11 (permalink)
|
Registrado: mar 2008
Mensajes: 8
|
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]
|
|
|
|
27/03/08, 11:19:02
|
#12 (permalink)
|
Registrado: nov 2002
Ubicación: Vitoria - Madrid
Mensajes: 227
|
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
|
|
|
|
27/03/08, 22:39:51
|
#13 (permalink)
|
|
Colaborador
Registrado: oct 2003
Ubicación: self.location.href
Mensajes: 2.257
|
Re: Hola tengo un fallo con script de capas
Cita:
Originalmente publicado por goreplus
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-size: 20pt;
}
.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;
}
</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 amet, consectetuer adipiscing elit. Curabitur tempus. Etiam porttitor gravida eros. Suspendisse potenti. Integer congue, metus eget elementum accumsan, pede elit sagittis orci, nec tincidunt felis mauris quis tortor. Nullam non risus in orci tincidunt congue. Phasellus fermentum tortor et massa. Etiam libero. Cras sed lectus fermentum elit venenatis suscipit. Nam mattis porttitor massa. Phasellus et turpis quis tellus pretium laoreet. Nulla tincidunt, dui eu blandit malesuada, felis nunc consequat erat, sit amet malesuada pede libero ut nulla. Praesent malesuada tellus rhoncus velit. Ut id nibh. Donec sagittis varius nunc. In sapien arcu, tincidunt non, auctor eu, porta aliquam, lacus. Maecenas interdum purus quis nibh. Duis tincidunt. Maecenas eu nisi in risus tincidunt vulputate. Nullam pharetra ultricies pede.</p>
<p>Nullam sollicitudin odio eget justo. Sed dolor erat, accumsan sit amet, ultricies id, iaculis ac, quam. Nunc mattis facilisis tellus. Curabitur vel elit. Phasellus orci nunc, congue ac, suscipit eu, fringilla eu, purus. Donec purus. Etiam id nibh at nunc placerat auctor. Aliquam tempus, diam eu interdum suscipit, odio sem lobortis mi, eu mattis libero leo nec tortor. Curabitur purus. In vitae nisl vel lorem fringilla pellentesque. Suspendisse varius pulvinar dolor. Curabitur sagittis neque in libero. In dapibus massa eget odio. Nullam tristique ipsum et nulla. Ut commodo. Donec vel tellus. Suspendisse nisl mauris, tempus vitae, commodo sit amet, congue sit amet, elit. In hac habitasse platea dictumst.</p>
<p>Pellentesque bibendum ultricies pede. Integer eros. Nulla semper leo in orci. Nulla et nunc vitae justo iaculis commodo. Phasellus pulvinar leo nec lacus. Vestibulum vel nulla. Sed felis. Phasellus eget pede nec tortor porta rhoncus. Donec non leo. Donec pede.</p>
<p>Vestibulum vitae mauris. Cras pulvinar. Integer non pede convallis lorem interdum congue. Ut gravida ante vitae velit. Vestibulum ut nibh et purus consectetuer hendrerit. Aliquam laoreet pulvinar neque. Maecenas dapibus elit ut nulla. Praesent dignissim dui eget arcu. Vivamus arcu est, aliquam eu, feugiat a, volutpat at, eros. Donec a nulla nec lectus venenatis aliquam. Proin consectetuer pretium ante. Mauris blandit felis id nunc pharetra varius. Morbi nec sem et massa suscipit condimentum. Aenean sem dolor, congue ac, laoreet vel, varius a, est. Curabitur 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==undefined) q="";
if(!sinBR) q+="<br/>";
elDIV.innerHTML = q;
for(var a=0; elDIV.childNodes.length>a; a++) {
document.body.appendChild( elDIV.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 hint( id, estatus ) {
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
|
|
|
|
28/03/08, 05:02:12
|
#14 (permalink)
|
Registrado: mar 2008
Mensajes: 8
|
Re: Hola tengo un fallo con script de capas
Cita:
Originalmente publicado por derkenuke
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-size: 20pt;
}
.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;
}
</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 amet, consectetuer adipiscing elit. Curabitur tempus< | |