前端原生能力速查笔记(HTML + 浏览器 API 实战篇)

本笔记用于整理前端开发中不依赖框架即可实现的高频实用功能 ,涵盖文件下载、打印、HTML 原生属性以及浏览器内置 JS API。

适合作为:日常开发速查 / 基础能力沉淀 / 新人教学笔记


一、a 标签文件下载功能

1. 核心原理

利用 HTML5 的 download 属性,

让浏览器在点击链接时触发下载行为,而不是直接预览资源。


2. 基础用法

复制代码
<!-- 直接下载(使用原文件名) -->
<a href="files/demo.pdf" download>下载 PDF</a>
<!-- 自定义下载文件名 -->
<a href="files/image.jpg" download="封面图.jpg">
  下载图片
</a>

3. 注意事项(重点)

(1)跨域限制
  • 同源资源:download 生效
  • 跨域资源:浏览器会忽略 download

✅ 正确方案:后端设置响应头

复制代码
Content-Disposition: attachment; filename="文件名.ext"

(2)兼容性
  • ✅ Chrome / Edge / Firefox / Safari
  • ❌ IE 不支持

(3)接口返回文件(Blob 下载)
复制代码
const blob = new Blob([data]);
const url = URL.createObjectURL(blob);

const a = document.createElement("a");
a.href = url;
a.download = "文件名.xlsx";
a.click();

URL.revokeObjectURL(url);

二、前端打印功能

1. 全页打印(基础)

复制代码
<button onclick="window.print()">打印页面</button>

📌 window.print() 是浏览器唯一标准打印入口。


2. 指定区域打印

HTML
复制代码
<div class="print-content">
  <h3>打印标题</h3>
  <p>需要打印的内容</p>
</div>
<button onclick="window.print()">打印</button>
CSS(打印核心)
复制代码
@media print {
  body * {
    visibility: hidden;
  }

  .print-content,
  .print-content * {
    visibility: visible;
  }

  .print-content {
    position: absolute;
    left: 0;
    top: 0;
    width: 100%;
  }
}

3. 打印进阶优化

(1)纸张与边距
复制代码
@media print {
  @page {
    size: A4;
    margin: 2cm;
  }
}
(2)打印背景色
复制代码
@media print {
  .print-content {
    -webkit-print-color-adjust: exact;
    print-color-adjust: exact;
  }
}
(3)分页控制
复制代码
@media print {
  .page-start {
    page-break-before: always;
  }

  .page-end {
    page-break-after: always;
  }

  .no-break {
    page-break-inside: avoid;
  }
}
(4)打印字体
复制代码
@media print {
  body {
    font-family: Arial, sans-serif;
    font-size: 12pt;
  }
}

三、常用 HTML 原生实用属性

|------------|------------------|------------|
| 标签 | 属性 | 功能 |
| img | loading="lazy" | 图片懒加载 |
| input | required | 表单非空校验 |
| video | controls | 默认播放控件 |
| textarea | placeholder | 输入提示 |
| select | multiple | 多选下拉 |
| form | autocomplete | 自动填充 |
| label | for | 聚焦绑定 input |
| details | <summary> | 原生折叠面板 |

📌 能用 HTML 解决的问题,优先不用 JS。


四、浏览器内置 JavaScript API

1. 复制到剪贴板

推荐:Clipboard API

复制代码
async function copyText() {
  await navigator.clipboard.writeText("要复制的内容");
  alert("复制成功");
}

⚠️ 需 HTTPS / localhost。


兼容旧方案(已废弃)

复制代码
document.execCommand("copy");

2. 全屏功能

复制代码
function enterFullscreen(el) {
  el.requestFullscreen?.() ||
  el.webkitRequestFullscreen?.() ||
  el.msRequestFullscreen?.();
}

function exitFullscreen() {
  document.exitFullscreen?.() ||
  document.webkitExitFullscreen?.() ||
  document.msExitFullscreen?.();
}

📌 必须由用户点击触发。


3. 本地存储

localStorage(长期)

复制代码
localStorage.setItem("key", "value");
localStorage.getItem("key");
localStorage.removeItem("key");
localStorage.clear();

sessionStorage(会话级)

复制代码
sessionStorage.setItem("temp", "123");

⚠️ 只能存字符串,对象需 JSON。


4. 地理定位

复制代码
navigator.geolocation.getCurrentPosition(
  (pos) => {
    console.log(pos.coords.latitude, pos.coords.longitude);
  },
  (err) => {
    console.log(err.message);
  }
);

⚠️ HTTPS + 用户授权。


5. 系统通知(Notification)

申请权限

复制代码
await Notification.requestPermission();

发送通知

复制代码
new Notification("通知标题", {
  body: "通知内容",
  icon: "icon.png"
});

注意

  • 必须 HTTPS(localhost 例外)
  • 用户可随时关闭权限
  • IE 不支持

结语

前端的底层能力,来自对浏览器本身的理解。

熟练掌握这些原生功能,能显著提升开发效率与代码质量。

相关推荐
子兮曰4 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰4 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
前端小万4 天前
写公众号赚了 3000 块后,我做了一款叫 "一键成稿" 的软件
前端·微信小程序
爱勇宝4 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
三十而立洋4 天前
Cookie 详解:从产生到安全,一次讲透
前端·javascript
卡布鲁4 天前
把一个 Vite + Vue3 应用塞进 qiankun (React + Umi3) 主站:十个坑的复盘
前端·javascript·react.js
汉堡大王95274 天前
Jev:不是聊天机器人, 而是一个智能 if 语句
前端·人工智能·后端
梦想很大很大4 天前
从运行事实到回归证据:Workrun 的 Telemetry 与 Evaluation 实践
前端·人工智能·后端
计算机魔术师4 天前
Meta Muse agent 接入 Shopify 的 Shop Pay 实现代理式购物
前端
沙蒿同学4 天前
我用 Go 搭了一条 AI Agent 流水线:从 1 张商品图到一整套淘宝详情页
前端·javascript·后端