Zum deaktivieren von Kontextmenü rechten Maustaste/lange Berührung in einen kiosk-Modus von Chrome?
Arbeiten wir an der software für ein museum. Es gibt mehrere interaktive Kioske mit touch-screen läuft auf Windows 8.1, die miteinander verbunden sind in das lokale Netzwerk. Keine Tastatur, keine Maus. Der server mit Apache enthält mehrere lokale websites. Jeder kiosk führt eine Kopie von Google Chrome im kiosk-Modus. So, wir haben einige lokale web-Anwendungen, die eine Museums-Besucher mit Informationen.
Nun, das problem. Wenn ein Besucher nicht lange touch auf dem Bildschirm funktioniert es wie ein Analog von rechts klicken. Kontext-Menü erscheint. Wir wollen es nicht bei allen. Ich habe Hinzugefügt, "oncontextmenu = return false" in den body-tag, und es half. Aber. Wir haben ein paar externe websites laufen in iframes (das museum verfügt über eine Verbindung zum Internet). Und Kontext-Menü hat erscheinen auf iframes. AFAIK, es gibt keine Möglichkeit, es zu deaktivieren per javascript.
Unser system Ingenieur bekam eine software, die vollständig deaktiviert den Rechtsklick in Windows. Überall, einschließlich Chrome. Aber. Es funktioniert für eine Maus. Und was berührt... naja, es deaktiviert die touch-Ereignisse überall neben Chrome. Vielleicht Chrome hat seinen eigenen touch-events handler, weiß ich nicht.
So, nachdem alle. Wir brauchen, um loszuwerden off Kontextmenü auf iframes auf Rechtsklick/lange Berührung in einen kiosk-Modus von Chrome. Bitte geben Sie mir einige Ratschläge.
window.frames["frame_id"].document.oncontextmenu = function(){ return false };
durch die Deaktivierung von Chrome cross-domain-origin-policy bedeutet Sie starten mit --disable-web-security-Schalter? Wenn dem so ist, es funktioniert nicht, leider...
Ich glaube, meine Antwort wird nicht funktionieren, wenn Ihr kisok Sicht ist innerhalb einer Chrome-app-man kann nicht Spritzen ein content-script in einem iframe geladen in einer anderen Erweiterung oder app Seite, auch wenn der iframe ist eine Seite, die die Verlängerung sollte in der Regel Zugriff haben. Aber ich denke, es könnte möglich sein, Ihr problem zu lösen, indem Sie mit
<webview>
- Elemente statt iframes: verwenden Sie die executeScript
- Methode, wenn die webview feuert eine contentload
Veranstaltung.InformationsquelleAutor korsun | 2015-01-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich davon aus, dass Sie die Anzeige einer einfachen
http://...
(oder vielleichthttps://...
oderfile://...
) Web-Seite auf Ihrem kiosk. Wenn Sie tatsächlich zu zeigen, eine app (d.h.,chrome-extension://...
), dann ist diese Strategie nicht funktionieren wird.Einer Chrome-Erweiterung, die injiziert
window.addEventListener("contextmenu", function(e) { e.preventDefault(); })
in jeder browsing-Kontext würde wahrscheinlich den trick tun blockieren von Kontextmenüs auf iframes.manifestieren.json:
contextblocker.js:
Erstellen Sie einfach einen Ordner und legen Sie die beiden Dateien drinnen. Dann gehen Sie zu
chrome://extensions/
, überprüfen Sie dieDeveloper Mode
box. Schließlich, klicken Sie aufLoad unpacked extension...
und wählen Sie den Ordner, den Sie gerade erstellt haben.Dieser soll verhindern, dass das Kontextmenü erscheint irgendwo in Erweiterung der Inhalte-Skripte ausgeführt werden dürfen, gehören alle geladenen Seite in einem iframe. Es gibt einige wichtige Punkte, an denen es scheitert:
chrome://
oderchrome-extension://
Seiten, oder auf den Google Web Store. Wenn Ihr kiosk ist die Anzeige einer app, diese ganze Strategie wird nicht funktionieren, da diese Verlängerung nicht in der Lage sein, um Zugriff iframes in einer anderen app oder Erweiterung (auch wenn die Quelle des iFrames ist eine Herkunft, die er normalerweise über die Berechtigung zum Zugriff).about:blank
, das content-Skript wird nicht ausgeführt, und Sie können über das Kontextmenü angezeigt werden. (Wennabout:blank
geladen wird in ein iframe, aber der block funktioniert.)sandbox
- Attribut, die nicht dieallow-scripts
Berechtigung, dann wird die Erweiterung nicht blockieren von Kontextmenüs aus, dass iframe.Solange keiner von diesen Beschränkungen gelten (und wie lange ein Skript auf der Seite selbst ist nicht klar, alle Ereignis-Listener auf
window
), dann sollte es funktionieren.Benutzt habe ich den obigen code zu erstellen eine einfache Erweiterung im Chrome Web Store. (Entwickler-Modus-Erweiterungen produzieren jetzt eine Warnung, die auf start-up, während Web Store Erweiterungen nicht.)
Chrome öffnet ein popup-änderung der Benutzer auf unsichere Erweiterungen verwendet werden.
Hm, Sie fügte hinzu, dass das Verhalten in einem letzten update, denke ich. Der einzige Vorschlag, den ich machen kann, ist, laden Sie die Erweiterung für den Chrome Web Store und installieren Sie es von dort. Wenn Sie nicht ein Entwickler sind, und wollen nicht, dass man die Einrichtung oder verbringen Sie die $5), die ich hochladen werde es später heute und fügen Sie einen link.
Wenn du das gemacht hast, wäre es genial. Bitte den link hier posten.
Genial ... vielen Dank!
InformationsquelleAutor apsillers