首页 > 原创文章 > 技术应用 > 查看文章

Invoker Commands API 是什么?都有哪些能力?

所属分类:技术应用 来源: 丁老师原创 更新时间:2026-08-29 09:46 浏览: 1128 IP属地: 深圳

又一个新技术出来了!这就是Invoker Commands API!是一个新的原生Web平台技术,并非传统的前端框架,也不是什么后端API,而是基于html标准,新增的一组API能力!Invoker Commands API的出现,可以说是给传统的html又新增了一项技能,解决了传统html页面交互功能较弱的问题!今天丁老师就详细做一下关于Invoker Commands API的介绍!

Invoker Commands API的诞生
Invoker Commands API(英语发音:/ɪnˈvoʊkər kəˈmændz ˌeɪ piː ˈaɪ/),最初于2023年,在Invoke Commands的理念在OpenUI社区提出,然后到了2025年12月,达到了Baseline 2025,从Chrome 135版本、Firefox144和Safari 26.2版本起,几乎所有主流浏览器都已完成支持。

Invoker Commands API到底是啥?
其实说白了,Invoker Commands API就是对传统html前端强的一项技术能力,他解决了前端开发中一个长期的比较麻烦的问题,比如在以前的前端开发中,任何UI交互,比如打开弹窗、展开菜单等效果,都需要手写Javascript代码,后来虽然诞生出了很多UI框架,JS框架可以直接使用,但基本还是等于使用别人封装好的代码。

而现在则不同了,使用Invoker Commands API,则不需要再手写复杂的代码,做一些重复且无效率的体力工作。举个简单的例子,比如我在html中要做一个弹层提示,在以前要么是手写代码(从css到javascript全得自己完成),要么是使用第三方的UI框架(臃肿、不兼容),而现在不同了,现在不需要写javascript代码了,直接在html元素中定义标记就能搞定:

<button commandfor="dls" command="toggle-popover">帮助</button>
<div id="dls" popover>我是丁老师软件</div>

直接把参数在html的元素对象中,就可以实现过去几百甚至几十行的代码效果:image.png

看到没,点击按钮,弹出层直接显示出来了,不需要写Javascript代码就能实现。如果觉得不好看,还可以通过css进行美化。

简单的说,Invoker Commands API给html集成了更多功能,在前端开发时,更方便、更快捷、更标准,不需要再对部分功能手写javascript代码。

核心方法介绍
Invoker Commands API主要有两类命令构成,一种是内置自带的命令,一种是自定义命令。

一、内置命令
1.Dialog相关命令

名称作用API
show-modal打开模态弹窗dialogdialog.showModal()
close关闭dialogdialog.close()
request-close关闭dialog确认窗口,可触发cancel取消事件dialog.requestClose()
show-modal以模态方式打开dialog.showModal()
show-modal以模态方式打开dialog.showModal()
show-modal以模态方式打开dialog.showModal()
<button commandfor="myDialog" command="show-modal">打开</button>

<dialog id="myDialog">
    <h2>提示</h2>

    <button commandfor="myDialog" command="close">
        关闭
    </button>
</dialog>

2.Popover相关命令

名称作用API
show-popover显示Popoverpopover.showPopover()
hide-popover隐藏Popoverpopover.hidePopover()
toggle-popover显示/隐藏切换popover.togglePopover()
<button commandfor="myPopover" command="toggle-popover">更多信息</button>

<div id="myPopover" popover>
    这是一个 Popover。

    <button
        commandfor="myPopover"
        command="hide-popover">
        关闭
    </button>
</div>

二、自定义命令
命令格式为command="--你的命令名",自定义命令需以--开头,比如:

<button commandfor="editor" command="--clear">清空内容</button>

<div id="editor">
    Hello World
</div>

这个代码要实现,点击“清空内容”按钮,然后会自动的清除对应ID“editor”内的内容。当然,自定义命令,需要配合javascript完成,不然你只标记个--clear程序也不知道你到底想干啥,这一步的javascript是必须要写的,请看:

document.querySelector('#editor').addEventListener('command', event => {
    if (event.command === '--clear') {
        event.currentTarget.textContent = '';
    }
});

这就构成了一段完整的代码,首先页面会监控id=editor的按钮,然后当出现自定义的command的事件,即--clear事件时,会自动触发清空目标对象id的内容。

总的来说,Invoker Commands API的内置命令,是包含了一些常见的、原生的、浏览器行为(虽然现在只有6个API,但不排除以后还会增加和阔含),而自定义命令则是由开发者自己开发交互逻辑。

丁老师建议
1.由于是新技术,只有较新的浏览器才支持,因此对于新系统、新项目,可以使用。对于一些老旧的系统,则肯定无法兼容,最好不要使用。
2.目前虽然说已成熟使用,但这个东西说白了也只是锦上添花而已,并非属于革命性的技术能力更新,可有可无,没必要纯粹为了去javascript而强行改造现有项目。
3.针对复杂的业务逻辑,建议还是以传统javascript优先。

相关文章

Linux使用lnmp套件安装后打卡默认站点...

最近要在某单位内网部署项目,使用了lnmp来配置环境,软件安装成功,可安装后不管是打开ip地址还是默认站点,都提示nginx 403 forbidden,这是怎么回事呢?首先,已经出现了nginx 403提示,说明nginx是安装正常的...

Google字体免费吗?如何使用?

Google字体是谷歌官方的在线字体库,有包含中英文在内的几千种字体,全部免费,无版权、可商用!并且和其他字体网站不一样,不需要下载到本地,只需要复制一行代码即可使用!支持哪些应用?网站、小程序、APP、公众号、电商详情页、海报、PPT...

Mysql查当天、本周、当月、本季度、当年等...

以下是mysql常用的日期时间查询语句,其中,时间字段名是默认以datetime格式的,如果是int时间戳格式的时间,则需要在时间字段名字段上,加上from_unixtime(时间字段名)。查询当天的数据:#时间字段为y-m-d格式,如...

Bagisto安装环境配置要求

Bagisto一个功能强大的电商平台系统,采用Laravel框架和Vue.js开发,支持前后端分离,适用于跨境电商、海外电商平台等行业。Bagisto的安装对系统和环境有特定的要求,具体如下:服务器:CPU:建议4核以上配置;内存:建议...

推荐文章

APP和小程序如何集成AI实现机器人客服?

有同学咨询丁老师,他们公司的小程序和APP,是属于C端的客户服务类APP,提供会员注册、下单、发货、订单查询、业务办理进度查看等模块。其中有一个功能是在线咨询,之前是对接的人工在线客服坐席咨询,在用户量大的时候,峰值可能同时需要5-8个客服...

Windows11右键恢复经典模式的方法[亲...

windows11更新后,不管是桌面的右键,还是文件上点右键,都非常地别扭,而且也非常的卡顿。在网上找了一堆方法,都不管用,经过不懈努力,终于找到了真正能恢复经典版右键的方法。废话不多说,具体方法如下:1.以管理员方式运行CMD打开后,在C...

关闭edge浏览器自带image viewe...

挺不错的浏览器,强加入了edge image viewer图片浏览器,感觉不是那么好,对于开发者来说,更想要原生的东西。包括微信网页版里的表情图片,用edge image viewer打开的话,无法保存为gif格式,即使保存了,也只是第一帧...

小红书个人账号/认证账号/企业号区别一览

普通账号个人认证号企业认证号蓝色认证标识薯条推广聚光平台效果广告普通应商业合作以KOL/KOC身份和品牌合作以品牌方身份发起起合作开设店铺个人店铺或个体户(不支持港澳台公司申请)旗舰店店或专卖店(支持港澳台公司申请)主动私信每天10位陌生用...