zoukankan      html  css  js  c++  java
  • 对于javaScript中的alert和document.write()的执行顺序的记录

    代码:

    <script>
    //1----语句式的匿名函数创建以及调用 (function(name,age){ alert("name:"+name+",age:"+age); document.write("name:"+name+",age:"+age+"
    <br/>"); alert("111"); alert("222"); })("lisi","44"); //------------------------------------------- //3---第三种函数的创建 var f2=new Function("name","age",'alert("name:"+name+",age:"+age);'); f2("zhaijiahao","22");
    </script>

    浏览器测试现象:访问test.html文件之后的现象

     点击完确定之后紧接着

      点击完确定之后紧接着

       点击完确定之后紧接着,特别注意页面中的并没有出现name:lisi,age:44这句话

     最后所有的调用的函数中的alert()运行完之后,就会显示name:lisi,age:44这句话

    具体的原因分析:

    关于document.write()和alert()执行顺序的问题

    为什么先写document.write()输出,却要等到后边的alert执行完成后才显示document.write()的内容?

    解答:

    有人认为:alert弹窗会阻塞代码 要点击确认才执行下面的代码,

    问题复述:问题是把alert()写到document.write()之后也是先出弹窗,这是什么原因呢?

    更合理的解答:alert会阻塞线程。实际上.write已经执行,只是浏览器还没渲染,这种情况下,有办法先让write执行结果显示。方式:

    想实现“先document.write,再alert”。这里提供下思路:1>主线程跑document.write() ,然后利用setTimeOut() 定时0。5秒后执行alert();这个方法是线程不可控的 2>利用promise强制执行document.write()完之后,再在then 方法内执行 alert
  • 相关阅读:
    How a webpage is loaded and displayed
    Tree知识总结
    Install Cassandra Locally
    axios接口封装
    Jsonp解决跨域问题
    react使用swiper,解决添加点击事件首位图片点击失效,解决轮播按钮被覆盖问题
    vue 生产环境和测试环境的配置
    vue使用远程在线更新代码
    vue.js axios实现跨域http请求接口
    leetcode每日一题(2020-05-27):974. 和可被 K 整除的子数组
  • 原文地址:https://www.cnblogs.com/isme-zjh/p/11527820.html
Copyright © 2011-2022 走看看