ZBLOG

setAttribute也可能,这一类的也都要罗列

你的问题聚焦于 “前端 JS 所有可能发出 HTTP 请求的原生函数和属性”,而 setAttribute 本身不会直接触发 HTTP 请求,但某些特定属性的修改可能会间接导致浏览器发起请求(如 srchref)。以下是完整整理:


原生 JavaScript 中会触发 HTTP 请求的函数/属性

1. 直接发送请求的 API

API 说明
fetch(url, options) Fetch API,现代标准网络请求方法。
new XMLHttpRequest() XHR 对象,通过 .open() + .send() 发送请求。
navigator.sendBeacon(url, data) Beacon API,用于页面卸载时可靠发送数据(如埋点)。
new WebSocket(url) WebSocket 连接(非 HTTP,但属于网络请求)。
new EventSource(url) Server-Sent Events (SSE),服务器推送事件。

2. HTML/SVG 属性修改触发的请求

以下属性的赋值或修改会自动触发浏览器发起 HTTP 请求

// Image/Media/IFrame 等资源加载
img.src = "url";          // <img>, <script>, <iframe>, <video>, <audio>
link.href = "url";        // <link> (CSS, prefetch, dns-prefetch)
script.src = "url";       // <script>
iframe.src = "url";       // <iframe>

// CSSOM 相关
document.styleSheets[0].href = "url"; // CSSStyleSheet.href

// SVG (部分元素)
svgElement.setAttribute("href", "url");    // SVG <use>, <image>
svgElement.setAttribute("xlink:href", "url"); // Deprecated xlink:href

3. DOM 方法间接触发请求

以下方法在操作特定属性时会间接触发请求:

element.setAttribute("src", "url");     // 等效于直接赋值 src
element.setAttribute("href", "url");   // 等效于直接赋值 href

关键区别说明

  1. 直接请求 API(如 fetch, XHR)由代码显式调用。
  2. 属性/Method 触发的请求是浏览器解析到资源依赖时自动发起的(如修改 src/href)。
  3. 不触发请求的情况:普通 DOM 属性(如 id, class)或非资源类属性(如 data-*)不会触发请求。

如果需要更具体的场景分析,可以进一步说明需求!


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=23221

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?