欧阳-95 2018-03-18 03:44 采纳率: 60%
浏览 2244
已采纳

关于把script脚本放在html结束标签外的运行结果???

<html>

</html>
<script>
  (function (){
    alert("Hello!");
  }());
</script>

如同上面这个例子,实践可行,照样可以跳出弹窗,但这是为什么?
我只听说过把script脚本放在head标签里的或body标签外的,
怎么放在html标签外面也行了,这能随意的吗?????

  • 写回答

6条回答

  • wenhaozengjiudq 2018-03-18 03:49
    关注

    在哪里放置 JavaScript 代码?

    通常情况下,JavaScript 代码是和 HTML 代码一起使用的,可以将 JavaScript 代码放置在 HTML 文档的任何地方。但放置的地方,会对 JavaScript 代码的正常执行会有一定影响,具体如下所述。

    放置于

    之间

    将 JavaScript 代码放置于 HTML 文档的

    标签之间是一个通常的做法。由于 HTML 文档是由浏览器从上到下依次载入的,将 JavaScript 代码放置于 标签之间,可以确保在需要使用脚本之前,它已经被载入了:

    复制代码 代码如下:



    <br> ……<br> JavaScript 代码<br> ……<br>

    ....

    放置于

    之间

    也有部分情况将 JavaScript 代码放置于

    之间的。设想如下一种情况:我们有一段 JavaScript 代码需要操作 HTML 元素。但由于 HTML 文档是由浏览器从上到下依次载入的,为避免 JavaScript 代码操作 HTML 元素时,HTML 元素还未载入而报错(对象不存在),因此需要将这段代码写到 HTML 元素后面,例子如下:

    复制代码 代码如下:







    <br> document.getElementById(&quot;div1&quot;).innerHTML=&quot;测试文字&quot;;<br>

    但通常情况下,我们操作页面元素一般都是通过事件来驱动的,所以上面这种情况并不多见。另外我们不建议将 JavaScript 代码写到 之外。

    提示

    如果 HTML 文档声明为 XHTML , 标签必须在 CDATA 部分内声明,否则 XHTML 将把 标签解析为另一个 XML 标签,里面的 JavaScript 代码可能不会正常执行。因此,在严格的 XHTML 中使用 JavaScript 应该像如下示例一样声明:

    复制代码 代码如下:



    <br> &lt;![CDATA[<br> JavaScript 代码<br> ]]&gt;<br>

    ....

    以上两种将 JavaScript 代码写到 HTML 文档中的方式,都是 HTML 文档内部引用 JavaScript 代码的方式。除了内部引用,还可以使用外部引用方式。

    外部引用 JavaScript 代码

    将 JavaScript 代码(不包括标签)单独形成一个文档,并以 js 后缀命名,如 myscript.js ,并在 HTML 文档 标签中使用 src 属性来引用该文件:

    复制代码 代码如下:





    ....

    在使用了外部引用 JavaScript 代码之后,其好处显而易见:
    1.避免在 JavaScript 代码里使用 <!-- ... //-->
    2.避免使用难看的 CDATA
    3.公共的 JavaScript 代码可以被复用于其他 HTML 文档,也利于 JavaScript 代码的统一维护
    4.HTML 文档更小,利于搜索引擎收录
    5.可以压缩、加密单个 JavaScript 文件
    6.浏览器可以缓存 JavaScript 文件,减少宽带使用(当多个页面同时使用一个 JavaScript 文件的时候,通常只需下载一次)
    7.避免使用复杂的 HTML 实体,如可以直接使用 document.write(2>1) 而无需写作 document.write(2<1)

    将 JavaScript 代码形成为外部文件,也会增加服务器的 HTTP 请求负担,在超高并发请求的环境下,这并不是一个好的策略。另外 在引用外部 js 文件时,需注意文件的正确路径

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办