【发布时间】:2015-03-29 03:23:23
【问题描述】:
我们正在为博物馆开发软件。有几个在 Windows 8.1 上运行的带有触摸屏的交互式信息亭连接到本地网络。没有键盘,没有鼠标。带有 Apache 的服务器包含多个本地网站。每个自助服务终端都以自助服务终端模式运行 Google Chrome 的副本。因此,我们有一些本地 Web 应用程序可以为博物馆参观者提供信息。
现在,问题来了。如果访问者长时间触摸屏幕,它的工作原理类似于右键单击。出现上下文菜单。我们根本不想要它。我在正文标签中添加了“oncontextmenu = return false”,它有所帮助。但。我们有几个在 iframe 中运行的外部网站(博物馆有互联网连接)。并且上下文菜单确实出现在 iframe 上。 AFAIK,没有办法使用 javascript 禁用它。
我们的系统工程师得到了一个完全禁用 Windows 右键单击的软件。任何地方,包括 Chrome。但。它适用于鼠标。至于触摸......嗯,它会在除了 Chrome 之外的任何地方禁用触摸事件。也许 Chrome 有自己的触摸事件处理程序,我不知道。
所以,毕竟。在 Chrome 的 kiosk 模式下,我们需要在右键单击/长按时摆脱 iframe 上的上下文菜单。请给我一些建议。
【问题讨论】:
-
虽然它可能可能是一个安全漏洞,但您可以尝试禁用 Chrome 的跨域来源策略并使用
window.frames["frame_id"].document.oncontextmenu = function(){ return false }; -
@JCOC611,通过禁用 Chrome 的跨域源策略,您的意思是使用 --disable-web-security 开关启动?如果是这样,不幸的是,它不起作用......
-
我认为如果您的 kisok 视图位于 Chrome 应用程序内部,我的回答将不起作用——您不能将内容脚本注入到加载到另一个扩展程序或应用程序页面内的 iframe 中,即使iframe 用于扩展程序通常应该可以访问的页面。 但是,我认为可以通过使用
<webview>元素而不是 iframe 来解决您的问题:当 webview 触发contentload事件时使用executeScript方法。
标签: javascript google-chrome iframe kiosk-mode