Foros del Web » Programando para Internet » Javascript »

incompatibilidad en los script de mi página

Estas en el tema de incompatibilidad en los script de mi página en el foro de Javascript en Foros del Web. Saludos al personal, ante todo decir que de javascript se demasiado poco, pero pasito a pasito, ¿no?. Tengo un problema en una página que estoy ...
  #1 (permalink)  
Antiguo 21/05/2003, 05:27
 
Fecha de Ingreso: abril-2003
Ubicación: Andalucia
Mensajes: 14
Antigüedad: 21 años, 1 mes
Puntos: 0
incompatibilidad en los script de mi página

Saludos al personal, ante todo decir que de javascript se demasiado poco, pero pasito a pasito, ¿no?.
Tengo un problema en una página que estoy montando, al principio de la página va un cabecero con su logo e incluye un script con su array() para pasar imagenes que se ocultan y se muestran.
Luego al final de la página va otro script para pasar tambien imagenes en modo scroll.
Al poner este último script, este me funciona, pero el primero que tengo (el del cabecero) ese ya no me va.
Quito el segundo script y el primero me vuelve a funcionar.
He probado poner otro script, pero nada tampoco, es como si al poner un segundo script de images me anulara el primero.
Probe en dividir la página con frame para ponerlos en páginas distintas, así claro que va, pero es que odio los frames y no lo quiero así, además tampoco creo que sea la solución.
Espero que alguien me pueda ayudar.
Gracias y un saludo.
  #2 (permalink)  
Antiguo 21/05/2003, 10:37
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Hola camaleon:

Podría tratarse de que usases los mismos nombres para variables o funciones (a mi también me pasa)

Si dispones de un link para verlo, te podríamos ayudar.

Saludos
  #3 (permalink)  
Antiguo 21/05/2003, 12:11
 
Fecha de Ingreso: abril-2003
Ubicación: Andalucia
Mensajes: 14
Antigüedad: 21 años, 1 mes
Puntos: 0
Hola caricatos , verás eso pensé, que pudiera ver variables o algo con nombres parecido, pero he mirado y mirado y lo único que veo en uno y en otro script es array(), como ya dije en javascript me pierdo mucho.
No tengo un link, pero voy a introducir parte de cada script:

1-- parte del primer script, va primero en el cabecero, y es el que se anula al introducir el otro:

<script language="JavaScript1.2">
var slideshow_width='198px'
var slideshow_height='148px'
var pause=4000

var fadeimages=new Array()
fadeimages[0]="photo1.jpg"
fadeimages[1]="photo2.jpg"
fadeimages[2]="photo3.jpg"
fadeimages[3]="photo2.jpg"
fadeimages[4]="photo5.jpg"
fadeimages[5]="photo2.jpg"

var preloadedimages=new Array()
for (p=0;p<fadeimages.length;p++){
preloadedimages[p]=new Image()
preloadedimages[p].src=fadeimages[p]
}

var ie4=document.all
var dom=document.getElementById

if (ie4||dom)
document.write('<div style="position:relative;width:'+slideshow_width+' ;height:'+slideshow_height+';overflow:hidden"><div id="canvas0" style="position:absolute;width:'+slideshow_width+' ;height:'+slideshow_height+';top:0;left:0;filter:a lpha(opacity=10);-moz-opacity:10"></div><div id="canvas1" style="position:absolute;width:'+slideshow_width+' ;height:'+slideshow_height+';top:0;left:0;filter:a lpha(opacity=10);-moz-opacity:10"></div></div>')
else
document.write('<img name="defaultslide" src="'+fadeimages[0]+'">')

var curpos=10
var degree=10
var curcanvas="canvas0"
var curimageindex=0
var nextimageindex=1


function fadepic(){
if (curpos<100){
curpos+=10
if (tempobj.filters)
tempobj.filters.alpha.opacity=curpos
else if (tempobj.style.MozOpacity)
tempobj.style.MozOpacity=curpos/100
}
else{
clearInterval(dropslide)
nextcanvas=(curcanvas=="canvas0")? "canvas0" : "canvas1"
tempobj=ie4? eval("document.all."+nextcanvas) : document.getElementById(nextcanvas)
tempobj.innerHTML='<img src="'+fadeimages[nextimageindex]+'">'
nextimageindex=(nextimageindex<fadeimages.length-1)? nextimageindex+1 : 0
setTimeout("rotateimage()",pause)
}
}

function rotateimage(){
if (ie4||dom){
resetit(curcanvas)
var crossobj=tempobj=ie4? eval("document.all."+curcanvas) : document.getElementById(curcanvas)
crossobj.style.zIndex++
var temp='setInterval("fadepic()",50)'
dropslide=eval(temp)
curcanvas=(curcanvas=="canvas0")? "canvas1" : "canvas0"
}
else
document.images.defaultslide.src=fadeimages[curimageindex]
curimageindex=(curimageindex<fadeimages.length-1)? curimageindex+1 : 0
}

function resetit(what){
curpos=10
var crossobj=ie4? eval("document.all."+what) : document.getElementById(what)
if (crossobj.filters)
crossobj.filters.alpha.opacity=curpos
else if (crossobj.style.MozOpacity)
crossobj.style.MozOpacity=curpos/100
}

function startit(){
var crossobj=ie4? eval("document.all."+curcanvas) : document.getElementById(curcanvas)
crossobj.innerHTML='<img src="'+fadeimages[curimageindex]+'">'
rotateimage()
}

if (ie4||dom)
window.onload=startit
else
setInterval("rotateimage()",pause)

</script>


Bueno al final lo he puesto entero, lo siento... porque son tan largos que algunos se acordará de mi madre

2-- el segundo script y aqui he probado con otros script y siempre al ponerlo me anula el anterior, bueno ahí va uno de ellos:

<script language="JavaScript1.2">

var sliderwidth="402px"
var sliderheight="74px"
var slidespeed=2
slidebgcolor="#FFFFBB"

var leftrightslide=new Array()
var finalslide=''
leftrightslide[0]='<a href="http://"><img src="photoA.jpg" border=0></a>'
leftrightslide[1]='<a href="http://"><img src="photoB.jpg" border=0></a>'
leftrightslide[2]='<a href="http://"><img src="photoC.jpg" border=0></a>'
leftrightslide[3]='<a href="http://"><img src="photoD.jpg" border=0></a>'
leftrightslide[4]='<a href="http://"><img src="sintitulo-1.gif" border=0></a>'
leftrightslide[5]='<a href="http://"><img src="sintitulo-2.gif" border=0></a>'


var copyspeed=slidespeed
leftrightslide='<nobr>'+leftrightslide.join(" ")+'</nobr>'
var iedom=document.all||document.getElementById
if (iedom)
document.write('<span id="temp" style="visibility:hidden;position:absolute;top:-100px;left:-9000px">'+leftrightslide+'</span>')
var actualwidth=''
var cross_slide, ns_slide

function fillup(){
if (iedom){
cross_slide=document.getElementById? document.getElementById("test2") : document.all.test2
cross_slide2=document.getElementById? document.getElementById("test3") : document.all.test3
cross_slide.innerHTML=cross_slide2.innerHTML=leftr ightslide
actualwidth=document.all? cross_slide.offsetWidth : document.getElementById("temp").offsetWidth
cross_slide2.style.left=actualwidth+20+"px"
}
else if (document.layers){
ns_slide=document.ns_slidemenu.document.ns_slideme nu2
ns_slide2=document.ns_slidemenu.document.ns_slidem enu3
ns_slide.document.write(leftrightslide)
ns_slide.document.close()
actualwidth=ns_slide.document.width
ns_slide2.left=actualwidth+20
ns_slide2.document.write(leftrightslide)
ns_slide2.document.close()
}
lefttime=setInterval("slideleft()",30)
}
window.onload=fillup

function slideleft(){
if (iedom){
if (parseInt(cross_slide.style.left)>(actualwidth*(-1)+8))
cross_slide.style.left=parseInt(cross_slide.style. left)-copyspeed+"px"
else
cross_slide.style.left=parseInt(cross_slide2.style .left)+actualwidth+30+"px"

if (parseInt(cross_slide2.style.left)>(actualwidth*(-1)+8))
cross_slide2.style.left=parseInt(cross_slide2.styl e.left)-copyspeed+"px"
else
cross_slide2.style.left=parseInt(cross_slide.style .left)+actualwidth+30+"px"

}
else if (document.layers){
if (ns_slide.left>(actualwidth*(-1)+8))
ns_slide.left-=copyspeed
else
ns_slide.left=ns_slide2.left+actualwidth+30

if (ns_slide2.left>(actualwidth*(-1)+8))
ns_slide2.left-=copyspeed
else
ns_slide2.left=ns_slide.left+actualwidth+30
}

}


if (iedom||document.layers){
with (document){
document.write('<table border="0" cellspacing="0" cellpadding="0"><td>')
if (iedom){
write('<div style="position:relative;width:'+sliderwidth+';hei ght:'+sliderheight+';overflow:hidden">')
write('<div style="position:absolute;width:'+sliderwidth+';hei ght:'+sliderheight+';background-color:'+slidebgcolor+'" onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed">')
write('<div id="test2" style="position:absolute;left:0px;top:0px"></div>')
write('<div id="test3" style="position:absolute;left:-1000px;top:0px"></div>')
write('</div></div>')
}
else if (document.layers){
write('<ilayer width='+sliderwidth+' height='+sliderheight+' name="ns_slidemenu" bgColor='+slidebgcolor+'>')
write('<layer name="ns_slidemenu2" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')
write('<layer name="ns_slidemenu3" left=0 top=0 onMouseover="copyspeed=0" onMouseout="copyspeed=slidespeed"></layer>')
write('</ilayer>')
}
document.write('</td></table>')
}
}
</script>


Bueno esto es.
Gracias y hasta luego......
  #4 (permalink)  
Antiguo 21/05/2003, 14:26
Avatar de sci-fi  
Fecha de Ingreso: marzo-2002
Mensajes: 157
Antigüedad: 22 años, 1 mes
Puntos: 0
hola,

la verdad que la solución no sería fácil, porque probablemente tengas que modificar el código de ambos scripts. La solución más fácil sería usar frames.

los dos scripts usan document.write es decir que tienen una parte que se ejecuta *mientras* se carga la página (la parte que imprime ese código html), y otra parte *después* que se carga la página (la parte que hace lo de las imágenes)

de todas maneras lo que se me ocurre ahora es esto, asumiendo que esos dos scripts están debajo de la etiqueta <body>:

usualmente esos problemas es porque los dos scripts llaman al navegador para que ejecute tal o tal función después que se carga la página, es decir usando el evento onload, de tal manera que hay conflicto en ese evento y el último que lo llamó es el que queda (como si lo sobreescribiera; ambos scripts están pero se ejecuta solamente el último). Prueba haciendo esto:

1) quita en el primer script estas líneas:

if (ie4||dom)
window.onload = startit
else
setInterval("rotateimage()",pause)

2) en el segundo, quitale esto:

window.onload=fillup

3) pero agregale al final del segundo esto:

if (ie4||dom)
window.onload = function ( ) { startit(); fillup(); }
// si esto no funciona prueba con esto:
// window.onload = startit, fillup;
else
window.onload = function ( ) { setInterval("rotateimage()", pause); fillup(); }

de todas maneras no te aseguro que funcione; por muchas cosas que sería ya demasiado largo explicar de js; se me ocurre como habría una solución más segura pero habría que meterse mucho en el código y además agregar código... la solución más fácil sería con frames
  #5 (permalink)  
Antiguo 21/05/2003, 17:44
 
Fecha de Ingreso: abril-2003
Ubicación: Andalucia
Mensajes: 14
Antigüedad: 21 años, 1 mes
Puntos: 0
Hola sci-fi, lo he probado y problema resuelto, como se dice en mi tierra: ¡¡ que arte tienes!!.
Muchas gracias
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 01:00.