Ver Mensaje Individual
  #24 (permalink)  
Antiguo 10/01/2011, 06:57
Avatar de IsaBelM
IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 6 meses
Puntos: 1012
Respuesta: como hacer para que un ancla no sea leida desde la parte mas superior

el código anterior funciona en ie8, ff, chrome, opera y safari, acabo de probarlo.
bien, como el left no quieres que sea constante entonces hay modificar parte del código
Cita:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html>
<head>
<script type="text/javascript">
function posicionabsoluta(element) {
if (typeof element == "string")
element = document.getElementById(element)

if (!element) return { top:0,left:0 };
var y = 0;
var x = 0;
while (element.offsetParent) {
x += element.offsetLeft;
y += element.offsetTop;
element = element.offsetParent;
}
return {top:y,left:x};
}


function buscar(ancla) {
document.getElementById('cargando').style.display = 'none';
var tag = ancla.buscaancla.value;
var elemento = document.getElementById(tag);
var pos = posicionabsoluta(elemento)
document.location.href = '#' + tag;
window.scrollTo(parseInt(pos.left-50), parseInt(pos.top-50));
}


function fnc(ancla) {
document.getElementById('cargando').style.display = 'block';
var tmo = setTimeout(function(){buscar(ancla);}, 2000);
}
</script>
<style type="text/css">
#header {
position:fixed;
}

#cont {
border: 1px red solid;
width: 2000px;
}

#cargando{
display: none;
background-color: yellow;
float: left;
}

#a1, #a2 {
border: 1px blue solid;
}

#a1 {
width:200px;
}

#a2 {
width:700px;
}
</style>
</head>
<body>
<div id="header">
<form name="anclaje">
<input type="text" value="a1" name="buscaancla" />
<input type="button" value="buscar" onclick="fnc(this.form);" />
<span id="cargando">cargando..</span>
</form>
</div>
<div id="cont">
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<a name="a1"></a>
<div align="center">
<div id="a1">
ancla1
</div>
</div>
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<a name="a2"></a>
<div align="center">
<div id="a2">
ancla2
</div>
</div>
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
<br /><br /><br /><br /><br /><br /><br />
</div>
</body>
</html>
si quitas las partes que te he marcado en rojo, funciona exactamente igual, es decir quitarle las anclas