惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

WordPress大学
WordPress大学
The Cloudflare Blog
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
V
Visual Studio Blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
博客园 - 司徒正美
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
酷 壳 – CoolShell
酷 壳 – CoolShell
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
月光博客
月光博客
The GitHub Blog
The GitHub Blog
L
LangChain Blog
D
DataBreaches.Net
T
The Blog of Author Tim Ferriss
F
Fortinet All Blogs
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
GbyAI
GbyAI
Apple Machine Learning Research
Apple Machine Learning Research
宝玉的分享
宝玉的分享
Engineering at Meta
Engineering at Meta
V
V2EX
MyScale Blog
MyScale Blog

张鑫旭-鑫空间-鑫生活

1分钟速度了解text-align match-parent声明 « 张鑫旭-鑫空间-鑫生活 光标的形状也能设置了,就是CSS caret-shape属性 « 张鑫旭-鑫空间-鑫生活 pretext与文字四面环绕效果的实现 « 张鑫旭-鑫空间-鑫生活 JSON.rawJSON方法的作用是什么? « 张鑫旭-鑫空间-鑫生活 如何使用CSS判断鼠标从哪个方向进入元素? « 张鑫旭-鑫空间-鑫生活 借助mediabunny纯JS实现视频水印、剪裁、合成等功能 « 张鑫旭-鑫空间-鑫生活 务必谨慎使用JS WeakRef弱引用 « 张鑫旭-鑫空间-鑫生活 CSS六边形头像的实现与蜂巢布局 « 张鑫旭-鑫空间-鑫生活 CSS corner-shape与背景底纹技术 « 张鑫旭-鑫空间-鑫生活 浅学WebTransport API:下一代Web双向通信技术 « 张鑫旭-鑫空间-鑫生活 HTML dialog元素新支持了closedBy属性 « 张鑫旭-鑫空间-鑫生活 HTML interestfor属性与悬停popover交互效果 « 张鑫旭-鑫空间-鑫生活 CSS3模拟window7炫酷界面效果展示 « 张鑫旭-鑫空间-鑫生活 图片旋转+剪裁js插件(兼容各浏览器) « 张鑫旭-鑫空间-鑫生活 纯js无图片无外链CSS图片幻灯片播放插件 « 张鑫旭-鑫空间-鑫生活 CSS border三角、圆角图形生成技术简介 « 张鑫旭-鑫空间-鑫生活 CSS “渐进增强”在web制作中常见应用举例 « 张鑫旭-鑫空间-鑫生活 让IE6/IE7/IE8浏览器支持CSS3属性 « 张鑫旭-鑫空间-鑫生活 jQuery – 高亮动态显示页面HTML代码插件 « 张鑫旭-鑫空间-鑫生活 翻译 – 逐渐消失的Flash网站 « 张鑫旭-鑫空间-鑫生活 CSS reset的重新审视 – 避免样式重置 « 张鑫旭-鑫空间-鑫生活 新浪微博插入话题后部分文字选中的js实现 « 张鑫旭-鑫空间-鑫生活 JavaScript实现http地址自动检测并添加URL链接 « 张鑫旭-鑫空间-鑫生活 CSS实现兼容性的渐变背景(gradient)效果 « 张鑫旭-鑫空间-鑫生活 CSS content内容生成技术以及应用 « 张鑫旭-鑫空间-鑫生活 CSS gradient渐变之webkit核心浏览器下的使用 « 张鑫旭-鑫空间-鑫生活 CSS渐变之CSS3 gradient在Firefox3.6下的使用 « 张鑫旭-鑫空间-鑫生活 区分IE8/IE7/IE6及其他浏览器-CSS “\9″hack « 张鑫旭-鑫空间-鑫生活 CSS实现跨浏览器兼容性的盒阴影效果 « 张鑫旭-鑫空间-鑫生活 CSS3&HTML5各浏览器支持情况一览表 « 张鑫旭-鑫空间-鑫生活
光速了解script style link元素新增的blocking属性 « 张鑫旭...
张鑫旭,zhangxinxu · 2025-03-27 · via 张鑫旭-鑫空间-鑫生活

by zhangxinxu from https://www.zhangxinxu.com/wordpress/?p=11568
本文可全文转载,独立域名个人网站无需授权,但需要保留原作者、出处以及文中链接,任何网站均可摘要聚合,商用请联系授权。

HTML blocking属性

一、前言

继续介绍Web前端前言新特性,这次要介绍的是一个HTML属性,名为blocking 属性它主要用于控制资源加载时对渲染的阻塞行为。

blocking 属性允许开发者对资源加载的优先级和时机进行精细控制,从而影响页面的渲染流程。浏览器在解析 HTML 文档时,会根据 blocking 属性的值来决定是否等待资源加载完成后再继续渲染页面,这对于优化页面性能和提升用户体验至关重要。

blocking 属性目前支持的HTML元素包括<script>元素、<style>元素和<link>元素。

使用示意:

<link rel="stylesheet" href="styles.css" blocking="render">
<style blocking="render">
  p {
    color: blue;
  }
</style>
<script src="script.js" async blocking="render"></script>

二、属性值和含义

目前关于blocking 属性的资料非常少,根据我从某个不太权威的地方看到的资料,blocking 属性有以下几个可选值:

render
当资源的 blocking 属性设置为 render 时,资源的加载会阻塞页面的渲染。
load
当设置为 blocking=”load” 时,资源的加载会阻塞 load 事件的触发。load 事件在页面的所有资源(包括图片、脚本等)加载完成后触发。
none
资源的加载不会阻塞页面的渲染或 load 事件的触发。这意味着浏览器会在后台异步加载该资源,而不会等待它加载完成就继续渲染页面。这种方式适用于那些对页面渲染不是至关重要的资源,如一些统计脚本或非关键的图片。

上面的属性值解释似乎很合理。

但是我查阅MDN文档还有规范,似乎目前仅支持render属性值。

这让我很是不解,为什么呢?

比方说<link>元素天然阻止后面的资源渲染,设置blocking="render"是多余的,<style>元素也是类似。

唯一有点应用场景的就是<script>元素中和async这个异步属性同时设置的时候,也就是资源还是异步加载,但是页面的渲染执行需要这个JS加载完毕。

哦,不对,我想了下,如果<link>元素在页面的末尾,而不是<head>中,blocking="render"还是有作用的,虽然这个场景很罕见。

总之,blocking属性是个不知所谓,看不懂的CSS属性。

兼容性

目前block属性除了Firefox浏览器之外,其余的现代浏览器都已经支持了,如下截图所示:

blocking属性的兼容性

三、DOMTokenList特性

虽然blocking属性长得浓眉大眼的,但特么居然还是个DOMTokenList特性的属性。

在HTML这门语言中,具有DOMTokenList的属性并不多,一个是class属性,比方说我们经常使用的classList.add()/remove()方法,还有一个是rel属性,对应的是relList,还有就是for属性吧,而且是<output>元素上的for属性。

最后一个就是本文介绍的blocking属性了。

同样的,我们可以使用add/remove/toggle/contains等方法对相关属性进行编辑处理。

例如,假设有HTML如下:

<script id="el" async blocking="render"></script>

则我们就可以使用如下所示的JavaScript代码增加blocking另外的值,此值可以任意设置,虽然大概率没什么实际的用处。

el.blocking.add('zhangxinxu');

此时,HTML信息就是这样的:

<script id="el" async blocking="render zhangxinxu"></script>

截图示意:

add方法执行结果示意

完整属性和方法参见:

{
  add: function add() { [native code] },
  contains: function contains() { [native code] },
  entries: function entries() { [native code] },
  forEach: function forEach() { [native code] },
  item: function item() { [native code] },
  keys: function keys() { [native code] },
  length: 2,
  remove: function remove() { [native code] },
  replace: function replace() { [native code] },
  supports: function supports() { [native code] },
  toggle: function toggle() { [native code] },
  toString: function toString() { [native code] },
  value: "render zhangxinxu",
  values: function values() { [native code] }
}

四、点评一下总结一下

花里胡哨不知所谓的HTML属性,到现在我都没搞清楚这个属性到底是做什么用的。

鸡肋,蛋疼,与现有能力重复,很难找到与设计初衷相匹配的场景。

我认为唯一的作用,反而是其DOMTokenList特性,终于<script><style><link>元素有了个可以存储任意字符串数据的属性了。

我们可以利用blocking属性标记任意的数据,方便我们进行数据的交互。

好了,就这样吧,以后要是此属性有更新迭代,我再来更新吧。

网红图片吉卜力风格

本文为原创文章,会经常更新知识点以及修正一些错误,因此转载请保留原出处,方便溯源,避免陈旧错误知识的误导,同时有更好的阅读体验。
本文地址:https://www.zhangxinxu.com/wordpress/?p=11568

(本篇完)