2012-03-07 21 views
5

Tengo un script JS que anexa a la página HTML los pares: Entrada + anclaancla con "computarizada" URL

¿Puedo calcular la URL antes de que ocurra la redirección?

Ahora tienen vínculo que tiene este aspecto:

<a href="#" onclick="myFunct();return false;">link</a> 

y myFunct utiliza window.location.href para redirigir página web. El problema con este enfoque es que no puedo (obviamente) presionar CTRL + clic en el enlace para abrir el enlace del objetivo en una nueva pestaña.

Detalles:

  • la URL del enlace se conoce después de obtener la URL del servidor - esta operación es muy caro para mí y me gustaría hacer eso sólo en caso de que sea absolutamente necesario.

  • La idea es la siguiente: el usuario elige un enlace, él/ella hace clic en él, url se obtiene a partir del servidor y el usuario es redirigido (en la misma ventana o en una nueva pestaña si él/ella utiliza CTRL + clic)

Gracias!

+1

¿Cuál es la pregunta? cómo calcular un enlace? ¿o cómo hacer que un enlace javascript se abra en una nueva pestaña? o algo mas ? no es muy claro – ManseUK

+0

He actualizado la pregunta. Espero que esté claro ahora. Perdón por la confusión. –

+0

Todavía no está muy claro ... ¿por qué obtienes la URL del servidor? ¿Qué estás pasando al servidor? ¿Cómo lo estás haciendo ahora? ¿Por qué es "caro"? – ManseUK

Respuesta

0

Resolví mi problema con el cálculo previo del enlace y la optimización del código para que la sobrecarga sea lo más baja posible.

3

Im no del todo seguro de que esto es lo que busca por tratar de darle a su ancla un id

<a href="#" id="mylink">link</a> 

entonces sólo actualizar el atributo href para cambiar la nueva ubicación (tal vez sobre el cambio en una entrada?

<input onchange="changeLink(this)" value="http://www.google.com/"/> 

function changeLink(elem) { 
    var mylink = document.getElementById('mylink'); 
    mylink.href = this.value; // you could prepend your value with a domain 
} 

Cada vez que el valor en el input cambia el href será cambiado para que coincida con

+0

No puedo hacer esto porque si un usuario desea usar un enlace, necesito contactar al servidor con información adicional que lleva tiempo. Dicho esto, el problema es más general. –

+0

@MartyIX puede deshabilitar el enlace hasta su actualización ... ¿por qué no poner todos los detalles en la pregunta al principio ... – ManseUK

+0

Pero para preparar un enlace lleva tiempo (tengo que contactar al servidor) y no lo hago Quiero hacer eso proactivamente. –

0

Se puede crear todos los vínculos de carga de la página

function myFunct(link) 
{ 
    return 'http://' + link + '#hash'; 
} 

$('a').each(function(){ 
    $(this).attr('href', myFunct($(this).text())); 
});​ 

demostración http://jsfiddle.net/MpM6Y/

actualización

Puede hacer lo mismo sin jQuery (y más dolor) usando var a_list = document.getElementsByTagName('a'); y un bucle sobre a_list con a.href = myFunct(a.innerHTML);

+1

Usted está usando jQuery aquí ... no jQuery tag en la pregunta – ManseUK

+0

Sí, lo sé y yo lo siento por eso De todos modos, espero que entiendas la idea. – PiTheNumber

+0

Ok, agregué algunos elementos puros de JS que necesita. – PiTheNumber

3

en lugar de navegar con el onmousedown, puede simplemente volver a escribir el href

<a href='http://www.google.com' id='computed_link' onmousedown='handleClick()'>Computed Link!!</a> 
<script type='text/javascript'> 
function handleClick() 
{ 
    document.getElementById('computed_link').href = 'http://www.yahoo.com'; 
} 
</script> 
+0

idea genial pero no funciona http://jsfiddle.net/PNEvr/ – PiTheNumber

+0

Claro que sí. Ese fue un ejemplo de la herramienta que no funciona ... no el script :) http://tryross.com/travistest/anchor-with-computed-url.html – trex005

+0

No funciona con CTRL + clic. –

Cuestiones relacionadas