浏览器执行JavaScript的机制、script标签识别逻辑及相关问题咨询
问题解答
浏览器对script标签的识别执行逻辑
- 浏览器解析HTML文档时遇到
<script>标签,默认会将其内容或其src属性指向的资源识别为JavaScript:HTML规范中<script>标签的type属性默认值为text/javascript,如果没有显式指定其他合法的MIME类型,浏览器会直接将脚本内容交给内置的JavaScript引擎处理。 - 执行逻辑分两种情况:内联脚本会直接解析执行;带
src属性的外部脚本会先根据async/defer属性的配置,在对应时机加载外部资源后再执行。
网页支持的脚本语言是否只有JavaScript
不是,当前网页原生默认的主流脚本语言确实是JavaScript,但历史上也有其他原生支持的脚本语言:
- 早期IE浏览器原生支持VBScript,作为和JavaScript并行的网页脚本选项,不过目前已经被完全废弃
- 现在浏览器也原生支持WebAssembly字节码,可作为性能敏感场景的补充运行逻辑
- 此外通过自定义
type属性搭配对应的解析脚本,还可以在网页中运行Python等其他语言(比如PyScript方案),但这不属于浏览器原生默认支持的范畴。
代码中不存在的Cookie提示来源
你看到的Cookie提示是页面加载的外部JavaScript脚本动态生成的,初始HTML静态源码中不存在对应文本是正常情况:
- 你提供的代码里存在多处外部脚本引入逻辑:开头的自执行脚本会动态加载
/lib/app-switcher.js,底部还有runtime.xxx.js、main.xxx.js等多个打包后的业务脚本文件 - 这些外部脚本运行时,会通过JavaScript API动态创建Cookie提示对应的DOM元素,插入到页面文档树中,同时注入对应的提示文本和交互逻辑,所以静态HTML源码里不会存在相关内容。
内容的提问来源于stack exchange,提问作者Julius Hamilton
相关产品推荐
相关产品推荐

