我正在学习JavaScript以及HTML和CSS。我编写了一个JavaScript文件Primes.js,其中包含一些与测试相关的与寻找相关的函数。
为了测试使用外部.js文件,我编写了以下HTML文件:
...
<body>
<script src="Primes.js">
console.log("Loaded...");
var n = 13;
alert(n + " is prime?: " + isPrime(n));
console.log("Ending...");
</script>
</body>
...
但它从未在脚本块中执行过语句。
环顾四周后,我找到this answer,并将身体改为:
...
<body>
<script src="Primes.js"></script>
<script>
console.log("Loaded...");
var n = 13;
alert(n + " is prime?: " + isPrime(n));
console.log("Ending...");
</script>
</body>
...
奇迹般地,它按预期工作。看起来很奇怪,需要一个空脚本标签来导入文件。
为什么要求导入.js文件的脚本标记为空?如果脚本是使用它们的相同标记中的来源,是否会产生后果?
答案 0 :(得分:1)
如w3c中所述,当src
属性存在时,脚本内的内容应该用于脚本文档。
如果指定了脚本元素的src属性,则脚本元素的内容(如果有)必须是文本IDL属性的值,该属性是从元素的内容派生的,匹配以下ABNF中的文档生成,其字符集为Unicode。
答案 1 :(得分:0)
通常,如果您没有从其他文件导入脚本,则应在脚本标记之间键入脚本。但是,由于您通过声明src
进行导入,因此您导入的文件中的脚本被视为是由浏览器插入(空)脚本标记之间。
答案 2 :(得分:0)
src属性指定应导入脚本。当渲染引擎看到src属性时,它将忽略脚本标记之间的任何内容。
在没有src属性的脚本标记之间放置文本会告诉渲染引擎将其作为内联脚本运行。
然后进行导入,然后在一组新的脚本标记之间添加内联脚本。