JavaScript:具有 SRC 属性的内联脚本?

Posted

技术标签:

【中文标题】JavaScript:具有 SRC 属性的内联脚本?【英文标题】:JavaScript: Inline Script with SRC Attribute? 【发布时间】:2010-11-06 13:54:25 【问题描述】:

我习惯于像这样包含和使用 JS:

<script type='text/javascript' src='/path/to/script.js'></script>
....
<script type='text/javascript'>
    alert('Do some stuff here, using resources defined in script.js.');
</script>

出于好奇,有没有人知道使用 src 属性的内联脚本的规则,例如:

<script type='text/javascript' src='/path/to/script.js'>
    alert('Do some stuff here, using resources defined in script.js.');
</script>

我可以测试在各种浏览器中会发生什么,但想知道官方的行为是什么。

【问题讨论】:

【参考方案1】:

它要么是一个,要么是另一个,而不是两者。 &lt;script&gt; 标签的 src 属性优先于标签正文。

html 4.01 Specification:

脚本可以在 SCRIPT 元素的内容或在 一个外部文件。如果src 属性 未设置,用户代理必须解释 元素的内容作为 脚本。如果src 有一个URI 值, 用户代理必须忽略元素的 内容并通过检索脚本 URI。

【讨论】:

没有意识到我在比赛。 :-) 这里是新版HTML5 spec 的链接(参见代码示例上方的文字)【参考方案2】:

HTML 规范声明

如果 src 有一个 URI 值,用户 代理必须忽略元素的 内容并通过检索脚本 URI。

【讨论】:

【参考方案3】:

来自HTML 4 standard:

如果src属性没有设置,用户 代理人必须解释的内容 元素作为脚本。如果源 有一个 URI 值,用户代理必须 忽略元素的内容和 通过 URI 检索脚本。

【讨论】:

以上是关于JavaScript:具有 SRC 属性的内联脚本?的主要内容,如果未能解决你的问题,请参考以下文章

chrome扩展拒绝执行内联脚本

将AngularJS变量绑定到内联脚本标记中

JavaScript 从脚本元素的src属性中解析查询字符串

拒绝执行内联脚本,因为它违反了以下内容安全策略指令:“script-src 'self'”

内容安全策略 nonce 不适用于事件处理程序属性

通过具有异步属性的 HTML5 脚本标记的 Javascript 执行顺序