我可以在网页中打开OS原生表情符号选择器吗?

bem*_*ler 25 html javascript

我知道有很多javascript插件和库可让用户选择表情符号进行文本输入,但是Windows和Mac已经具有本机表情符号选择器(? Win.CTRL?Space),当用户单击时,是否可以打开这些本机表情符号选择器?一个文本字段,而不是在我的网站上安装插件?

我已经尝试模拟按钮按键,但是根本没有用。

hac*_*ape 8

简短的答案是没有。

为了从javascript访问任何操作系统功能,您需要相应的浏览器API来支持。

AFAIK,没有为此的API。有一个讨论,在这里提示添加<input emoji />为标准,但似乎没有获得牵引力。


编辑:以下是我的原始答案,已修改。意见指出,我完全同意该问题的错误方面。

但是,OP显然对您可以在JavaScript中利用浏览器功能做什么有一些错误的想法。因此,我认为仍然值得澄清。

您无法从js发送任意模拟的键盘事件,并希望操作系统能够响应。可能的话,这将是浏览器严重的安全问题。想象一下,打开一个网站,它将向您的操作系统触发一系列键盘事件,并擦除您的桌面(通过快捷键完全可行)。

您需要了解浏览器内部的运行时环境基本上与本机OS隔离。您的JavaScript可以访问的任何操作系统功能都完全由浏览器供应商决定。出于安全原因,他们在做出这些决定时非常谨慎。

另外,请区分“浏览器可以做什么”和“浏览器允许您在js中做什么”。看到Chrome具有“表情符号和符号”上下文菜单项,并不一定意味着它决定授予您相同的JS功能。

为了进一步阐明为什么模拟键盘事件与本地键盘事件根本不同,我在此处提供了一个图表。蓝色箭头是模拟键盘事件的流向。它可以到达的最远的地方是浏览器的内部事件总线。它从来没有机会进入OS事件总线,因此无法通知本机表情符号选择器。 键盘事件流

  • 仅当您没有将“表情符号选择器”视为专用键盘时,“这对浏览器而言才是严重的安全问题”。我的意思是,有一种方法可以指示浏览器显示数字键盘,而不是标准键盘(“ &lt;input type =“ number”&gt;”),因此我不认为存在固有的安全风险。只是这种输入“类型”不存在。 (3认同)