script在Html中的摆放位置

以前认为script就应该写在head中,今天在写W3School上面的例子的时候,设置函数检测已经点击到要实现功能的按钮(播放/暂停),但是对该视频播放功能却没有实现。

<!DOCTYPE html>
<html>

    <head>
        <meta charset="utf-8" />
        <title>TestVideo</title>

    </head>

    <body>
        <div style="text-align:center">
            <button onclick="playPause()">播放/暂停</button>
            <button onclick="makeBig()"></button>
            <button onclick="makeNormal()"></button>
            <button onclick="makeSmall()"></button>
            <br />
            <video id="video1" width="420" style="margin-top: 15px;">
                <source src="http://www.w3school.com.cn/example/html5/mov_bbb.mp4" type="video/mp4"></source>
                <source src="alert(" 111 ");"></source>

            </video>
        </div>
        <script type="text/javascript">
            var myVideo = document.getElementById("video1");

            function playPause() {
                alert(myVideo);
                if(myVideo.paused) {
                    alert("111");
                    myVideo.play();
                } else {
                    alert("222");
                    myVideo.pause();
                }

            }

            function makeBig() {
                myVideo.width = 560;
            }

            function makeSmall() {
                myVideo.width = 320;
            }

            function makeNormal() {
                myVideo.width = 420;
            }
        </script>
    </body>

</html>

后来查了一下原因是因为,html文件是自上而下的执行方式,但引入的css和javascript的顺序有所不同,css引入执行加载时,程序仍然往下执行,而执行到script脚本是则中断线程,待该script脚本执行结束之后程序才继续往下执行。所以,一般将script放在body之后是因为避免长时间执行script脚本而延迟阻塞。而有一些页面的效果的实现,是需要预先动态的加载一些js脚本,所以这些脚本应该放在body之前。其次,不能将需要访问dom元素的js放在body之前,因为此时还没有开始生成dom,所以在body之前的访问dom元素的js会出错,或者无效。就是因为这个,在dom没生成好时我就给它添加了方法,才导致这样。

如果想测试该结论的话,可将script段整段移到head中,弹出框将显示null。

其实还有另外一种方法,那就是用jquery的初始化页面方法,把上面给标签添加的点击事件加入到$(function(){})中也是可以的,原理和上面是一样的,这个方法是等页面加载好了才执行,所以不管放在哪都可以了!

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值