javascript基础学习系列三百一十四:Atomics 与 SharedArrayBuffer

尽管 HTML 和 Web 应用自诞生以来已经发生了天翻地覆的变化,但 Web 表单几乎从来没有变过。 JavaScript 可以增加现有的表单字段以提供新功能或增强易用性。为此,表单字段也暴露了属性、方法 和事件供 JavaScript 使用。以下是本章介绍的一些概念。
 可以使用标准或非标准的方法全部或部分选择文本框中的文本。
 所有浏览器都采用了 Firefox 操作文本选区的方式,使其成为真正的标准。
 可以通过监听键盘事件并检测要插入的字符来控制文本框接受或不接受某些字符。

所有浏览器都支持剪贴板相关的事件,包括 copy、cut 和 paste。剪贴板事件在不同浏览器中的
实现有很大差异。
在文本框只限某些字符时,可以利用剪贴板事件屏幕粘贴事件。
选择框也是经常使用 JavaScript 来控制的一种表单控件。借助 DOM,操作选择框比以前方便了很多。
使用标准的 DOM 技术,可以为选择框添加或移除选项,也可以将选项从一个选择框移动到另一个选择 框,或者重排选项。

富文本编辑通常以使用包含空白 HTML 文档的内嵌窗格来处理。通过将文档的 designMode 属性设 置为"on",可以让整个页面变成编辑区,就像文字处理软件一样。另外,给元素添加 contenteditable 属性也可以将元素转换为可编辑区。默认情况下,可以切换文本的粗体、斜体样式,也可以使用剪贴板功 能。JavaScript 通过 execCommand()方法可以执行一些富文本编辑功能,通过 queryCommandEnabled()、 queryCommandState()和 queryCommandValue()方法则可以获取有关文本选区的信息。由于富文本编 辑区不涉及表单字段,因此要将富文本内容提交到服务器,必须把 HTML 从 iframe 或 contenteditable 元素中复制到一个表单字段。

随着 Web 浏览器能力的增加,其复杂性也在迅速增加。从很多方面看,现代 Web 浏览器已经成为 构建于诸多规范之上、集不同 API 于一身的“瑞士军刀”。浏览器规范的生态在某种程度上是混乱而无 序的。一些规范如 HTML5,定义了一批增强已有标准的 API 和浏览器特性。而另一些规范如 Web Cryptography API 和 Notifications API,只为一个特性定义了一个 API。不同浏览器实现这些新 API 的情 况也不同,有的会实现其中一部分,有的则干脆尚未实现。

最终,是否使用这些比较新的 API 还要看项目是支持更多浏览器,还是要采用更多现代特性。有些 API 可以通过腻子脚本来模拟,但腻子脚本通常会带来性能问题,此外也会增加网站 JavaScript 代码的 体积。

注意 WebAPI的数量之多令人难以置信(参见MDN文档的WebAPIs词条)。本章要介 绍的 API 仅限于与大多数开发者有关、已经得到多个浏览器支持,且本书其他章节没有涵 盖的部分。

Atomics 与 SharedArrayBuffer

多个上下文访问 SharedArrayBuffer 时,如果同时对缓冲区执行操作,就可能出现资源争用问 题。Atomics API 通过强制同一时刻只能对缓冲区执行一个操作,可以让多个上下文安全地读写一个 SharedArrayBuffer。Atomics API 是 ES2017 中定义的。

仔细研究会发现 Atomics API 非常像一个简化版的指令集架构(ISA),这并非意外。原子操作的本质会排斥操作系统或计算机硬件通常会自动执行的优化(比如指令重新排序)。原子操作也让并发访问 内存变得不可能,如果应用不当就可能导致程序执行变慢。为此,Atomics API 的设计初衷是在最少但 很稳定的原子行为基础之上,构建复杂的多线程 JavaScript 程序。

  • 4
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值