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