本文档描述了提供访问浏览器提供的取色器的API。
目前在网页上,创意应用开发者无法实现取色器,一种允许用户从屏幕上的像素中选择颜色的工具,包括请求颜色数据的网页之外的像素。
此API使开发者能够在构建自定义颜色选择器时使用浏览器提供的取色器。
dictionary ColorSelectionResult { DOMString sRGBHex; };
dictionary ColorSelectionOptions { AbortSignal signal; };
[Exposed=Window, SecureContext] interface EyeDropper { constructor(); Promise<ColorSelectionResult> open(optional ColorSelectionOptions options = {}); };
为了 {{EyeDropper/open}} 一个取色器,用户代理必须呈现符合以下规则的用户界面:
允许开发者访问用户机器的未受限像素数据的端点带来了安全挑战。 特别是,任何取色器的实现都不应允许网页“抓取”用户不打算与网页应用程序共享的信息,例如当用户在屏幕上移动鼠标时。
减轻这种威胁的一种方法是要求在用户采取某些明确的操作(如按下鼠标按钮)时才将像素数据提供给网页应用程序。
此外,浏览器应在用户进入取色器模式时提供明确的提示,例如更改光标,并提供用户退出该模式的方法, 例如按下ESC键,并且不允许作者取消此行为。
在允许用户选择颜色之前,浏览器应确保用户有机会看到UI。 这可以通过在打开取色器和允许颜色选择之间强制执行最小时间间隔来实现。
进入取色器模式的过渡应要求可消耗的用户激活,例如点击网页上的按钮,以帮助避免无意间暴露像素数据。