ContactsManager:select() 方法
select()
是 ContactsManager
接口的方法,它返回一个 Promise
,当该 Promise 解析时,会向用户显示一个联系人选择器,允许他们选择希望共享的联系人。此方法需要用户手势才能解析 Promise
。
语法
js
select(properties)
select(properties, options)
参数
properties
-
一个
字符串
数组,定义要从联系人中检索哪些信息。允许的值如下'name'
:联系人的姓名。'tel'
:联系人的电话号码。'email'
:联系人的电子邮件地址。'address'
:联系人的邮寄地址。'icon'
:联系人的头像。
options
可选-
选项如下
multiple
-
一个布尔值,允许选择多个联系人。默认为
false
。
返回值
异常
InvalidStateError
DOMException
-
如果浏览上下文不是顶级上下文,如果联系人选择器显示一个表示已存在联系人选择器的标志(因为任何时候只能存在一个选择器),或者如果启动联系人选择器失败,则返回此异常。
SecurityError
DOMException
-
如果该方法不是由用户激活触发的,则返回此异常。
TypeError
-
如果
properties
为空,或者任何指定的属性不受支持,则返回此异常。
安全
瞬态激活 是必需的。用户必须与页面或 UI 元素交互才能使此功能正常工作。
示例
基本示例
以下示例设置要为每个联系人检索的属性数组,以及设置选项对象以允许选择多个联系人。
然后定义一个异步函数,该函数使用 select()
方法向用户显示联系人选择器界面并处理所选结果。handleResults()
是开发者定义的函数。
js
const props = ["name", "email", "tel", "address", "icon"];
const opts = { multiple: true };
async function getContacts() {
try {
const contacts = await navigator.contacts.select(props, opts);
handleResults(contacts);
} catch (ex) {
// Handle any errors here.
}
}
仅使用支持的属性进行选择
以下示例使用 getProperties()
来确保仅传递支持的属性。否则,select()
可能会抛出 TypeError
。handleResults()
是开发者定义的函数。
js
const supportedProperties = await navigator.contacts.getProperties();
async function getContacts() {
try {
const contacts = await navigator.contacts.select(supportedProperties);
handleResults(contacts);
} catch (ex) {
// Handle any errors here.
}
}
规范
规范 |
---|
联系人选择器 API # contacts-manager-select |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。