本文详解为何将 javascript 放入 `
问题根源在于 执行时机与作用域不匹配。原始代码中存在两个关键错误:
onload="siteTitle()" 在 中调用未声明的全局函数
当脚本通过
脚本在 DOM 尚未就绪时执行(若未正确放置)
原 HTML 将
✅ 正确做法是:移除内联 onload,完全依赖 window.onload 或更现代的 DO
MContentLoaded,并确保脚本加载位置合理。
HTML 结构(精简可靠):
Title Site Title
aabc
a
main.js 内容(简洁安全):
// ✅ 方案一:使用 window.onload(兼容旧浏览器)
window.onload = function() {
const element = document.getElementById("site-title");
if (element) {
element.innerHTML = "New Heading";
} else {
console.warn("Element #site-title not found.");
}
};
// ✅ 方案二(推荐):使用 DOMContentLoaded(更早触发,无需等待图片等资源)
// document.addEventListener("DOMContentLoaded", function() {
// const element = document.getElementById("site-title");
// if (element) element.innerHTML = "New Heading";
// });综上,外部脚本失效并非“不能工作”,而是因 HTML 结构与 JS 执行模型不匹配所致。遵循加载时机、作用域和防御性编程原则,即可彻底解决此类问题。