Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在网页中打开操作系统本机表情选择器吗?_Javascript_Html - Fatal编程技术网

Javascript 我可以在网页中打开操作系统本机表情选择器吗?

Javascript 我可以在网页中打开操作系统本机表情选择器吗?,javascript,html,Javascript,Html,我知道有很多javascript插件和库允许用户为文本输入选择表情符号,但windows和mac已经有了本机表情符号选择器(⊞ 赢,还是按CTRL键⌘当用户点击文本字段而不是在我的网站上安装插件时,我有没有办法打开这些原生表情选择器 我已经试过模拟按键,但根本不起作用。简短的回答是否定的 为了从javascript访问任何操作系统功能,您需要相应的浏览器API来支持 好了,没有一个API。有一个讨论建议将添加到标准中,但似乎没有取得任何进展 编辑:以下是我的原始答案,已修订。评论指出我把重点放

我知道有很多javascript插件和库允许用户为文本输入选择表情符号,但windows和mac已经有了本机表情符号选择器(⊞ 赢,还是按CTRL键⌘当用户点击文本字段而不是在我的网站上安装插件时,我有没有办法打开这些原生表情选择器

我已经试过模拟按键,但根本不起作用。

简短的回答是否定的

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

好了,没有一个API。有一个讨论建议将
添加到标准中,但似乎没有取得任何进展


编辑:以下是我的原始答案,已修订。评论指出我把重点放在了问题的错误方面,我完全同意

然而,OP显然对如何在javascript中利用浏览器功能有一些错误的想法。所以我认为这仍然值得澄清


您不能从js发送任意模拟键盘事件,并希望操作系统响应。如果可能的话,这对浏览器来说将是一个严重的安全问题。想象一下,打开一个网站,它会向你的操作系统触发一系列键盘事件,并摧毁你的桌面(通过快捷方式完全可行)

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

另外,区分“浏览器可以做什么”和“浏览器允许您在js中做什么”。看到Chrome有一个“Emoji&Symbols”上下文菜单项,并不一定意味着它决定在js中授予你同样的能力

为了进一步阐明为什么模拟键盘事件与本机事件有根本不同,我在这里提供了一个图表。蓝色箭头表示模拟键盘事件的流程。它能到达的最远的地方是浏览器的内部事件总线。它从未有机会访问OS事件总线,因此无法通知本机表情选择器。

我认为这是不可能的。不,你不能。这是不可能的,因为根本没有标准化的API。你可能必须打开你自己的模式,用你自己选择的表情符号填充。我明白了,这很令人沮丧。谢谢大家!如果我们可以得到windows按钮和。按钮ascii值这是可能的,但不幸的是,我们没有windows按钮ascii值。您可以尝试的其他方法是循环使用表情符号列表,并使用选择器或其他方法将所有内容添加到页面中。它只需要很少的JavaScript,而且工作正常,但没有任何平台依赖性问题。“这对浏览器来说是一个严重的安全问题”,除非你不把“表情选择器”看作一个专用键盘。我的意思是,有一种方法可以指示浏览器显示数字键盘,而不是标准键盘(
),因此我不会假设存在固有的安全风险。只是这样的输入类型不存在。^同意。“你不能”的结论很可能是正确的,但理由太过分了。根本没有API,这就足够了;它可以以一种完全安全的方式完成。我同意,没有API可以解决这个问题。我可能把重点放在了错误的方面。但OP似乎对如何处理脚本模拟事件有一些非常错误的想法。只是想澄清一下。@FedericoklezCulloca我想他的意思是让JS代码执行按键命令,而不是打开表情键盘。