2011-08-10 29 views
9

¿Cómo desactivo/elimino la opción 'Abrir enlace en una nueva pestaña' en el menú contextual del navegador? Si esto no es posible con javascript, etc., ¿hay alguna forma de modificar lo que sucede cuando el usuario hace clic en este vínculo, por ejemplo, muestra una alerta o impide que se cargue la pestaña ...?Cómo deshabilitar el 'Abrir enlace en una nueva pestaña' en el navegador?

+0

En general, no debe tratar de socavar la intención del usuario, incluso si no es el flujo hacia el que se está orientando.Alternativamente, puede hacer que href sea "#" y usar un manejador 'onclick' para realmente realizar la transición de página, eliminando así la capacidad del usuario para usar esa función. – ghayes

+3

¿Por qué querrías interferir con el navegador de tus usuarios así? Debería ser ME la pestaña a la que se abre su enlace. – Amy

+1

@Inuyasha Mi aplicación actualmente muestra un error si el enlace se abre en una nueva pestaña. Está diseñado para cargar el contenido en un div en la misma página. Si este no era el caso, créanme que no desearía "interferir". – grai

Respuesta

3

Han resuelto el problema principal ahora, con bastante facilidad ya que resultó simplemente pasando la cadena de consulta del href a una función ajax.

Probablemente debería haber explicado en mi pregunta que lo que quería era solo una medida temporal. De todos modos gracias por todos los comentarios.

0

No estoy seguro de por qué alguien rechazaría su pregunta, lo que necesita para google es cómo secuestrar eventos mediante javascript. Puede mostrar una alerta cuando hace clic en un enlace y evita que funcione. jQuery es un conjunto de herramientas JS popular y tiene un método para detener eventos predeterminados en un elemento, en inglés simple, con jQuery puede evitar que un hipervínculo lo explote y mostrar una alerta también. Este enlace http://api.jquery.com/event.preventDefault/ puede ayudarlo más. En cuanto a deshabilitar el menú contextual que aparece al hacer clic derecho en una página web, sí, eso es muy posible. No soy un ninja de JS, por lo que no puedo comentar si puedes eliminar un elemento del menú contextual pero IMO, no debería ser posible.

+1

esto no funcionará cuando haga clic con el botón del medio del mouse o mantenga presionada la tecla CTRL y haga clic en un enlace, ¿cómo evitar estos casos? – Pars

6

La posibilidad de abrir un enlace en una nueva pestaña/ventana es la funcionalidad nativa de muchos navegadores. Si no desea permitir este tipo de actividad, debe notificar al navegador que su enlace no es verdaderamente un enlace. La forma más sencilla de hacerlo es eliminar el atributo href de su elemento a.

HTML:

<a href="http://google.com">Can be opened in new tab/window</a> 
<a>Cannot be opened in new tab/window</a> 

Ahora hay algunas otras cosas que el navegador puede estar haciendo para usted de forma predeterminada cuando se ve un enlace. Si no ha definido ningún elemento de estilo de los elementos a, es probable que su nuevo pseudo-enlace elegante no aparezca con un enlace de fuente-color, puntero y subrayado. Puedes seguir adelante y hacerlo con la suficiente facilidad.

CSS:

a { 
    color: blue; 
    cursor: pointer; 
    text-decoration: underline; 
} 

que se espera que responde a la pregunta de cómo deshabilitar/eliminar el 'Abrir vínculo en una pestaña nueva' opción en el menú del botón derecho del navegador. Sin embargo, para obtener un poco de crédito extra, supongo que probablemente desee que el enlace siga funcionando como un enlace normal al hacer clic. Siéntase libre de usar JavaScript para que esto suceda. Aquí hay un ejemplo usando jQuery:

JavaScript:

$("body").on("click", "a[data-href]", function() { 
    var href = $(this).data("href"); 
    if (href) { 
     location.href = href; 
    } 
}); 

Modificado HTML:

<a href="http://google.com">Can be opened in new tab/window</a> 
<a data-href="http://google.com">Cannot be opened in new tab/window</a> 

CSS modificación:

a[href], a[data-href] { 
    color: blue; 
    cursor: pointer; 
    text-decoration: underline; 
} 

Espero que esto ayude!

Cuestiones relacionadas