Foros del Web » Programando para Internet » Javascript »

Uno de capas.

Estas en el tema de Uno de capas. en el foro de Javascript en Foros del Web. Estimados amigos: Tengo el siguiente script: <script language="JavaScript1.2" type="text/javascript"> I4I5=document.all?1:0; N4=document.layers?1:0 N6=document.getElementById&&!document.all?1:0 function crea(cpa) { this.id=(N6&&!N4)?eval('document.getElementById('+ "cpa"+')'): eval('document.all.'+cpa+'') this.mover=mover2; this.sacaLeft=sacaLeft2 this.sacaTop=sacaTop2 this.autor=false return this } ...
  #1 (permalink)  
Antiguo 04/02/2003, 09:49
Avatar de fgil2  
Fecha de Ingreso: enero-2003
Ubicación: zaragoza
Mensajes: 285
Antigüedad: 21 años, 3 meses
Puntos: 0
Uno de capas.

Estimados amigos:

Tengo el siguiente script:

<script language="JavaScript1.2" type="text/javascript">
I4I5=document.all?1:0; N4=document.layers?1:0
N6=document.getElementById&&!document.all?1:0
function crea(cpa)
{
this.id=(N6&&!N4)?eval('document.getElementById('+ "cpa"+')'):
eval('document.all.'+cpa+'')
this.mover=mover2;
this.sacaLeft=sacaLeft2
this.sacaTop=sacaTop2
this.autor=false
return this
}
function mover2(x,y)
{
this.id.style.left=x
this.id.style.top =y
}
function sacaLeft2()
{
x=(N6)? this.id.style.left:this.id.style.pixelLeft
return parseInt(x)
}
function sacaTop2()
{
y=this.id.style.top
return parseInt(y)
}
var z_Index = 15
elemento=new crea
function moverDown(xevent,objeto)
{
elemento=new crea(objeto)
var xs=(N6)?xevent.pageX:event.x
var ys=(N6)?xevent.pageY:event.y
elemento.autor=true;
elemento.enX=xs-elemento.sacaLeft()
elemento.enY=ys-elemento.sacaTop()
elemento.id.style.zIndex=z_Index++
}
function persigue(xevent)
{
var xs=(N6)?xevent.pageX:event.x
var ys=(N6)?xevent.pageY:event.y
if(elemento.autor)
{
elemento.mover(xs-elemento.enX,ys-elemento.enY)
}
}
function outCapa()
{
elemento.autor=false
}
document.onmousemove=persigue;
/******************************************
* Script Hecho por Eleazar Prieto Aguilar *
* [email protected] *
* Todos los derechos reservados ;) *
* Se puede usar siempre y cuando esto se *
* mantega integramente (copypaste) free *
******************************************/
</script>

Insertado aquí.

El problema está en el comportamiento de las capas, si solo las seleccionamos, todo bien, pero a la hora de arrastrarlas, hacen un efecto raro(como de seleccionar el texto de la capa seleccionada y del resto). ¿Cómo evitar esto?
--------------------------------------------------------------------------------
He observado que al seleccionarlas con el botón derecho del ratón no pasa, claro que sale el menú normal del browser. ¿Se podría combinar la acción de seleccionarlos con el botón derecho eliminando este menú?

Muchas Gracias.
__________________
fer
  #2 (permalink)  
Antiguo 04/02/2003, 10:38
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 fer:

Ese script es magnífico, y yo lo uso en el tema de las postales (también le he enviado a unKnown un mensaje de agradecimiento), pero cuando quieres mover una capa algo "cargadita" no creo que sea posible evitar lo que comentas.

Si te enteras de alguna mejora, no dudes en comunicarla...

Un abrazo
  #3 (permalink)  
Antiguo 04/02/2003, 10:51
Avatar de fgil2  
Fecha de Ingreso: enero-2003
Ubicación: zaragoza
Mensajes: 285
Antigüedad: 21 años, 3 meses
Puntos: 0
Gracias Caricatos:

Me has dejado un poco desanimado, si un esperto me dice que no ha encontrado(de momento) forma de evitar eso, dudo que yo... en fin no deja de ser un reto.

Probaré con lo del botón derecho a ver si por ahí.

Un saludo Caricatos.
__________________
fer
  #4 (permalink)  
Antiguo 04/02/2003, 12:45
Avatar de fgil2  
Fecha de Ingreso: enero-2003
Ubicación: zaragoza
Mensajes: 285
Antigüedad: 21 años, 3 meses
Puntos: 0
Hola Caricatos:

En combinación con este script:

<style>
<!--
.skin0{
position:absolute;
width:1px;
border:px solid white;
background-color:#6699CC;
font-family:Verdana;
font-size: 1px;
line-height:1px;
cursor:default;
visibility:hidden;
}
.menuitems{
padding-left:1px;
padding-right:1px;
}
--> </style>
<script language="JavaScript1.2">
var menuskin=0
var display_url=0
function showmenuie5(){
var rightedge=document.body.clientWidth-event.clientX
var bottomedge=document.body.clientHeight-event.clientY
if (rightedge<ie5menu.offsetWidth)
ie5menu.style.left=document.body.scrollLeft+event. clientX-ie5menu.offsetWidth
else
ie5menu.style.left=document.body.scrollLeft+event. clientX
if (bottomedge<ie5menu.offsetHeight)
ie5menu.style.top=document.body.scrollTop+event.cl ientY-ie5menu.offsetHeight
else
ie5menu.style.top=document.body.scrollTop+event.cl ientY
ie5menu.style.visibility="visible"
return false
}
function hidemenuie5(){
ie5menu.style.visibility="hidden"
}
function highlightie5(){
if (event.srcElement.className=="menuitems"){
event.srcElement.style.backgroundColor="highlight"
event.srcElement.style.color="white"
if (display_url==1)
window.status=event.srcElement.url
}
}
function lowlightie5(){
if (event.srcElement.className=="menuitems"){
event.srcElement.style.backgroundColor=""
event.srcElement.style.color="black"
window.status=''
}
}
function jumptoie5(){
if (event.srcElement.className=="menuitems"){
if (event.srcElement.getAttribute("target")!=null)
window.open(event.srcElement.url,event.srcElement. getAttribute("target"))
else
window.location=event.srcElement.url
}
}
</script>
<!--[if IE]>
<div id="ie5menu" class="skin0" onMouseover="highlightie5()" onMouseout="lowlightie5()" onClick="jumptoie5()">
<div class="menuitems">.</div>
</div>
<![endif]-->
<script language="JavaScript1.2">
if (document.all&&window.print){
if (menuskin==0)
ie5menu.className="skin0"
else
ie5menu.className="skin1"
document.oncontextmenu=showmenuie5
document.body.onclick=hidemenuie5
}
</script>

Se consigue un resultado bastante satisfactorio, siempre arrastrando con el botón derecho.
(aun estoy puliendo algunas cosillas).

No se si funciona con otros navegadores, espero tu consejo para eso.

Gracias Caricatos.
__________________
fer

Última edición por fgil2; 04/02/2003 a las 13:05
  #5 (permalink)  
Antiguo 04/02/2003, 13:25
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 otra vez:

He intentado ver el efecto en tu página, pero pinche con el derecho... y ¡nada!
Cuando lo pongas avisa y lo vemos... (creo que podría tocarse para que funcione también en netscape)
Por cierto, se te volvió a colar lo de Neopectate

Saludos
  #6 (permalink)  
Antiguo 05/02/2003, 09:27
Avatar de fgil2  
Fecha de Ingreso: enero-2003
Ubicación: zaragoza
Mensajes: 285
Antigüedad: 21 años, 3 meses
Puntos: 0
Sorprendido me he quedado, la cosa ha resultado muy simple,
probando un poco esta noche en el trabajo he podido comprobar
que con añadir lo siguiente dentro del<body> es suficiente:

oncontextmenu="return false" ondragstart="return false" onselectstart="return false"

A mi me funciona a la perfección, ya me comentarás si es así con otros browsers.(Pruebalo en el enlace anterior que está corregido)

Da igual que arrastres con el izquierdo que con el derecho.

Un saludo.

(Respecto a Neo, ha sido un error, he estado haciendo modificaciones en "carlitunixtatecatos y debí subir uno anterior), pronto estará corregido.

Salu2
__________________
fer

Última edición por fgil2; 05/02/2003 a las 09:29
  #7 (permalink)  
Antiguo 05/02/2003, 09: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
Hola fer:

Para el botón derecho, creo que con el contextmenu es suficiente (ya lo habíamos probado en una propuesta del boss -kao-)
aunque lo probé para ver si funcionaba en opera, y en ese browser sigue sin funcionar.

Saludos
  #8 (permalink)  
Antiguo 05/02/2003, 10:20
Avatar de fgil2  
Fecha de Ingreso: enero-2003
Ubicación: zaragoza
Mensajes: 285
Antigüedad: 21 años, 3 meses
Puntos: 0

Pero si solo dejas el contextmenu sigue haciendo estraños si lo arrastras con el izquierdo, pero si añades:

ondragstart="return false" onselectstart="return false", funciona bien con los dos,no es así?

Lo ideal sería conseguirlo también para el Opera.

Otro saludo y al "boss".
__________________
fer
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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 21:54.