浏览器只执行扩展名为.js且content-type为text/javascript的外链脚本;html/php/json等文件即使含js代码也不会执行,需提取纯净js代码存为utf-8无bom的.js文件,并确保路径正确、大小写匹配、模块语法合规。

直接把 HTML 文件当 JS 外链引用,浏览器不会执行其中的 <script></script> 块,也不会报错——它只是静默加载了一个 HTML 文档,当成纯文本处理。你看到功能没生效,大概率就是误把 utils.html 或 main.php 当成 JS 文件用了。
script src 必须指向 .js 文件
浏览器只识别扩展名为 .js 且响应头为 Content-Type: text/javascript(或兼容类型)的资源为可执行脚本。其他后缀如 .html、.php、.txt 即使内容全是 JS 代码,也会被忽略执行逻辑。
-
<script src="utils.html"></script>→ 加载成功但不执行,控制台无报错,DOM 中也找不到对应函数 -
<script src="config.json"></script>→ 同样静默失败,JSON 不是 JS 脚本 - 路径大小写敏感:Linux/macOS 服务器上
Utils.js≠utils.js,404 就是找不着
怎么把已有 JS 代码转成外链文件
不是“保存为 script 外链”,而是提取 JS 逻辑、另存为独立 .js 文件,并确保内容纯净。
DMap GL地图JSAPI(dmapgl)开发指南。用于编写、审查、调试 DMap 地图 API 代码,涵盖地图初始化、覆盖物渲染、图层管理、事件处理、控件交互等任务。当用户提及 dmap、dmapgl、jsapi‑gl 或相关地图开发需求时自动触发。
- 新建文本文件,用 UTF-8 编码(**无 BOM**),后缀必须是
.js,例如init.js - 只粘贴 JavaScript 代码,**删掉所有
<script></script>和标签**,也不加任何 HTML/CSS/注释块 - 检查是否有
字符串(比如在字符串字面量里),它会导致浏览器提前闭合标签——虽然这是内嵌场景的问题,但复制时容易带进来 - 保存后,在 HTML 中用
<script src="init.js"></script>引入,**标签体内不能有任何内容**,否则会被忽略
常见错误:type="module" 却没配模块语法
加了 type="module" 就不是普通脚本了,它会强制启用严格模式、要求 ES 模块语法、路径必须带扩展名,稍有不匹配就报错。
-
<script type="module" src="utils.js"></script>→ 若utils.js里写的是var foo = 1;而不是export const foo = 1;,控制台报Failed to load module script - import 路径漏掉
.js:import { bar } from "./helper"→ 必须写成import { bar } from "./helper.js" - 跨域加载模块(比如从 CDN 引第三方库)需服务端返回
Access-Control-Allow-Origin,否则白屏无提示
动态创建 script 标签时顺序不可靠
用 document.createElement("script") 手动插入多个外链脚本,即使按顺序 append,也不能保证执行顺序——网络延迟不同,先下载完的先执行。
- 想保序?改用
defer+ 外链方式,或者用Promise.all配合import()动态导入 - 避免在
onload回调里直接调用下一个脚本的全局函数,它可能还没定义;应统一用模块化或事件通知机制 - 调试时看 Network 面板的 Initiator 列,确认每个
.js是谁触发的,避免重复加载同一文件
最易被忽略的一点:外链 JS 文件的编码和服务器返回的 Content-Type 必须匹配。UTF-8 无 BOM 是底线,否则中文变量名或注释可能变乱码,导致语法错误。本地双击打开 HTML 时,有些浏览器对 file:// 协议下的 MIME 类型校验更松,上线到 HTTP 服务后突然失效,就是这个原因。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










