Saltar al contenido

¿Cómo deshabilitar el menú contextual al hacer clic derecho / toque largo en un modo kiosco de Chrome?

Solución:

Supongo que estás mostrando una llanura http://... (o posiblemente https://... o file://...) Página web en su quiosco. Si realmente muestra una aplicación (es decir, chrome-extension://...), esta estrategia no funcionará.

Una extensión de Chrome que inyecta window.addEventListener("contextmenu", function(e) { e.preventDefault(); }) en cada contexto de navegación probablemente haría el truco para bloquear menús contextuales en iframes.

manifest.json:

{
    "manifest_version": 2,
    "name": "Context Menu Blocker",
    "version": "1.0",
    "content_scripts": [
      {
        "matches": ["<all_urls>"],
        "js": ["contextblocker.js"],
        "all_frames": true,
        "match_about_blank": true
      }
    ]
}

contextblocker.js:

window.addEventListener("contextmenu", function(e) { e.preventDefault(); })

Simplemente cree una carpeta y coloque los dos archivos dentro. Luego ve a chrome://extensions/, comprobar el Developer Mode caja. Finalmente, haga clic en Load unpacked extension... y seleccione la carpeta que acaba de crear.

Esto debería evitar que el menú contextual aparezca en cualquier lugar donde se permita la ejecución de scripts de contenido de extensión, incluida cualquier página cargada dentro de un iframe. Hay algunos puntos notables en los que falla:

  • No se permite que las extensiones se ejecuten en chrome:// o chrome-extension:// páginas, o en la tienda web de Google. Si su kiosco muestra una aplicación, toda esta estrategia no funcionará, porque esta extensión no podrá acceder a los iframes dentro de otra aplicación o extensión (incluso si la fuente del iframe es un origen que normalmente tendría permiso acceder).
  • Si navega directamente a about:blank, la secuencia de comandos de contenido no se ejecutará y puede aparecer el menú contextual. (Si about:blank se carga en un iframe, sin embargo, el bloque funcionará correctamente).
  • Si un iframe tiene un sandbox atributo que no incluye el allow-scripts permiso, entonces la extensión no puede bloquear los menús contextuales de ese iframe.

Siempre que no se aplique ninguna de esas restricciones (y siempre que un script en la página en sí no borre todos los detectores de eventos en window), entonces debería funcionar.

He usado el código anterior para crear una extensión simple en Chrome Web Store. (Las extensiones del modo de desarrollador ahora producen una advertencia en el inicio, mientras que las extensiones de Web Store no lo hacen).

Si está utilizando jQuery, el siguiente código deshabilitará el menú contextual (también conocido como ‘clic derecho’).

$(document).on("contextmenu",function(){
       return false;
    }); 
}); 
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *