通过优锐课核心java学习笔记中,我们可以看到,码了很多专业的相关知识, 分享给大家参考学习。
确定什么JavaScript将在何时运行
使用JavaScript设计网页需要注意代码的显示顺序以及是否将代码封装到函数或对象中,所有这些都会影响代码的运行顺序。
JavaScript在网页上的位置
由于页面上的JavaScript是根据某些因素执行的,因此,请考虑将JavaScript添加到网页的位置和方式。
我们基本上可以在三个位置附加JavaScript:
· ·直接进入页面顶部
· ·直接进入页面正文
· ·从事件处理程序/侦听器
JavaScript本身是在网页内还是在链接到该网页的外部文件中都没有关系。 事件处理程序是否被硬编码到页面中还是由JavaScript本身添加也无关紧要(除了它们不能在添加之前触发)。
直接在页面上编码
说JavaScript直接在页面的顶部或正文是什么意思?如果代码未包含在函数或对象中,则直接在页面中。在这种情况下,一旦包含该代码的文件已足够加载以访问该代码,该代码就会顺序运行。
仅当调用函数或对象时,才运行该函数或对象中的代码。
基本上,这意味着页面的头部和正文中不在函数或对象之内的任何代码都将在页面加载时运行-一旦页面已足够加载以访问该代码即可。
最后一点很重要,并会影响你在页面上放置代码的顺序:直接放置在页面中,需要与页面中的元素进行交互的任何代码都必须出现在它所依赖的页面中的元素之后。
通常,这意味着如果你使用直接代码与页面内容进行交互,则此类代码应放在正文的底部。
函数和对象中的代码
每当调用该函数或对象时,就会运行该函数或对象中的代码。 如果从直接在页面头部或正文中的代码调用它,则它在执行顺序中的位置实际上是从直接代码中调用函数或对象的位置。
分配给事件处理程序和侦听器的代码
将函数分配给事件处理程序或侦听器不会导致该函数在分配该函数的位置运行-前提是你实际上是在分配函数本身而不在运行该函数并分配返回的值。 (这就是为什么在将函数名称分配给事件时通常不会在函数名称的末尾看到()的原因,因为加括号会运行该函数并分配返回的值而不是分配函数本身。)
附加到事件处理程序和侦听器的函数在触发它们所附加的事件时运行。 大多数事件是由访问者与你的页面互动触发的。 但是,存在一些例外情况,例如窗口本身的load事件,该事件在页面完成加载时触发。
页面元素上的事件附带的函数
页面本身内元素上的事件所附加的任何功能都将根据每个单独的访问者的操作运行-该代码仅在发生特定事件以触发它时才运行。 因此,对于给定的访问者来说代码永远不会运行并不重要,因为该访问者显然没有执行需要它的交互。
所有这些当然都假设你的访问者已经使用启用了JavaScript的浏览器访问了你的页面。
定制的访客用户脚本
一些用户安装了可能与你的网页交互的特殊脚本。 这些脚本在所有直接代码之后运行,但在加载事件处理程序附加的任何代码之前运行。
由于你的页面对这些用户脚本一无所知,因此你无法知道这些外部脚本可能会做什么-它们可能会覆盖已附加到已分配处理的各种事件的任何或所有代码。 如果此代码覆盖事件处理程序或侦听器,则对事件触发器的响应将运行用户定义的代码,而不是代码或除代码之外的代码。
这里的要点是,你不能假定设计为在页面加载后运行的代码将被允许以你设计的方式运行。 此外,请注意,某些浏览器具有允许在浏览器中禁用某些事件处理程序的选项,在这种情况下,相关的事件触发器将不会在你的代码中启动相应的事件处理程序/侦听器。
> 喜欢这篇文章的可以点个赞,欢迎大家留言评论,记得关注我,每天持续更新技术干货、职场趣事、海量面试资料等等
> 如果你对java技术很感兴趣也可以交流学习,共同学习进步。
> 不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代
文章写道这里,欢迎完善交流。最后奉上近期整理出来的一套完整的java架构思维导图,分享给大家对照知识点参考学习。有更多JVM、Mysql、Tomcat、Spring Boot、Spring Cloud、Zookeeper、Kafka、RabbitMQ、RockerMQ、Redis、ELK、Git等Java干货