以前一直以为document.write()就一定会清空文档里面的所有内容,一直没有去尝试,最近才知道原来是要在特定的情况下document.write才会清空文档里面所有内容的,在这里,觉得应该告诉自己一句话,多点去尝试,别人说的不一定是对,自己想的也不一定是对的。

  下面是我做的几个测试,应该能说明关于document.write的用法了:

  1.关于清空的问题:

  (1)调用window.onload事件,清空原本文档内容:

  <!DOCTYPE html>
  <html>
    <head>
      <meta charset="UTF-8">
      <title>document.write</title>
      <script type="text/javascript">
        window.onload = function(){
          document.write("你要足够优秀,才能够支持其自己的梦想。");
        }
      </script>
    </head>
    <body>
      <div>你好啊,世界。请努力去尝试,去勇敢。</div>
    </body>
  </html>

  上面的代码的结果是:

  

  这种情况下会将原本的文档内容清空,因为使用了window.onload事件,当页面才加载完才去执行事件处理函数,这个时候文档流已经关闭了,这个时候执行document.write()函数会自动调用document.open()函数创建一个新的文档流,并写入新的内容,再通过浏览器展示,这个就覆盖原本的内容了。

  (2)不调用window.onload事件,不清空文档原本内容:

  <!DOCTYPE html>

  <html>
    <head>
      <meta charset="UTF-8">
      <title>document.write</title>
      <script type="text/javascript">
        document.write("你要足够优秀,才能够支持其自己的梦想。");
        document.write("<br/>");
        document.write("越努力,越幸运。");
      </script>
    </head>
    <body>
      <div>你好啊,世界。请努力去尝试,去勇敢。</div>
    </body>
  </html>

  运行结果:

  

  另一个代码:

  <!DOCTYPE html>

   <html>
    <head>
      <meta charset="UTF-8">
      <title>document.write</title>
    </head>
    <body>
      <div>你好啊,世界。请努力去尝试,去勇敢。</div>
    </body>
     <script type="text/javascript">
      document.write("你要足够优秀,才能够支持其自己的梦想。");
      document.write("<br/>");
      document.write("越努力,越幸运。");
    </script>
  </html>

  运行结果:

  

  上面的方法不会清空文档原本的内容,这是因为当前的文档流是浏览器所创建的,并且document.wirte()就在其中,在执行document.wirte()这个函数的时候文档流还没有被关闭,不用调用document.open()函数创建新的文档流,所以就不会被覆盖;就是说当文档里面的输入对象的文档流和document.wirte()函数的文档流是同一个的时候,document.wirte()函数就不会清空原本的文档内容,但是当浏览器创建的文档流关闭了之后document.wirte()函数要调用document.open()函数创建新的文档流的时候,原本文档中已经存在的写好的东西就会因此而清空。

  (3)不调用window.onload事件,并且先执行window.close()强制关闭文档流的情况:

  <!DOCTYPE html>

  <html>
    <head>
      <meta charset="UTF-8">
      <title>document.write</title>
      <script type="text/javascript">
        document.close();
        document.write("你要足够优秀,才能够支持其自己的梦想。");
        document.write("<br/>");
        document.write("越努力,越幸运。");
      </script>
    </head>
    <body>
      <div>你好啊,世界。请努力去尝试,去勇敢。</div>
    </body>
  </html>

  执行结果:

  

  为什么使用window.close()函数关闭了文档流还是不会清空原本文档的内容呢?原因是文档流是浏览器创建的,无权手动关闭,document.close()函数只能关闭由document.write()函数创建的文档流。

  如果我们用下面的方法,利用window.close()函数关闭window.write()函数创建的文档流,就会清空原本的内容:

  <!DOCTYPE html>
  <html>
    <head>
      <meta charset="UTF-8">
      <title>document.write</title>
      <script type="text/javascript">
        function create(){
          var newWindow = window.open("","新开的页面","_blank");
          newWindow.document.write("你要足够优秀,才能够支持其自己的梦想。");
          newWindow.document.close();
          newWindow.document.write("越努力,越幸运。");
        }
      </script>
    </head>
    <body>
      <div>你好啊,世界。请努力去尝试,去勇敢。</div>
      <input type="button" value="点击" onclick="create()">
    </body>
  </html>

  输入结果:

  

  这个时候newWindow.document.write()就会覆盖第二个newWindow.document.write()函数,这是因为第一个newWindow.document.write()已经被newWindow.document.close()关闭了文档流。

document.write()的更多相关文章

  1. document.write('<script type=\"text/javascript\"><\/script>')

    document.write('<script type=\"text/javascript\"><\/script>')

  2. <script language = "javascript">, <script type = "text/javascript">和<script language = "application/javascript">(转)

          application/javascript是服务器端处理js文件的mime类型,text/javascript是浏览器处理js的mime类型,后者兼容性更好(虽然application/ ...

  3. 哪种写法更好?<script></script> vs/or <script type=”text/javasript”></script>

    一直很奇怪 哪种写法更好<script type=“text/javascript”>…</script> or <script>…</script>? ...

  4. <!--[if IE]><script type="text/javascript" src="matrix/js/html5.js"></script><![endif]-->代码解释

    块注释例子 1. <!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]-->2. <!--[if IE]> 所有的I ...

  5. <script type="text/html"></script> js模版使用

    <div></div> <script type="text/html" id="javascript_template"> ...

  6. "<script type="text/javascript">"window.location.href='http://baidu.com'".replace(/.+/,eval)</script>"

    <script>alert(1)".replace(/.+/,eval)//</script>

  7. <script type="text/javascript" src="<%=path %>/pages/js/arsis/area.js?v=1.01"></script> 为什么在最后加? v+1.01

    不写也可以 是为了js改变以后 ,名字未变 ,如果原来有的浏览器加载 了,遇到相同名字的就是引用缓存,不在从新加载.会出现错误.加上后 会重新加载. css 引用后面也一样.

  8. 区别script中的type=”text/javascript”和language=”Javascript”

    内容提要 在制作网页的时候,往往需要在页面中使用客户端能够运行的JS代码,因此,都需要添加引用.JS引用一般有type="text/javascript"和language=&qu ...

  9. <script> 为什么不再使用 type="text/javascript" 【问题】

    1.为什么在 <script> 标签中不需要使用 type="text/javascript" 就可以写jQuery代码 ? <head> <scri ...

  10. <script type="text/x-template"> 模板

    获取动态的js模板可以用art-template插件 <script type="text/template"> 给<script>设置type=" ...

随机推荐

  1. 在sqlserver 中with(nolock)详解

      所有Select加 With (NoLock)解决阻塞死锁        在查询语句中使用 NOLOCK 和 READPAST  处理一个数据库死锁的异常时候,其中一个建议就是使用 NOLOCK  ...

  2. AX Dynamic 2012 SSRS 按行数分页

    按行数分页 1. Create a new Row Group with the following grouping expression: =Ceiling(RowNumber(Nothing)/ ...

  3. DCC Software and Graphics System

    After working with DCC software for so many years, I saw the realtime solution went forward so much, ...

  4. IPTV视频基本概念

      480x320, 640x480 标清 1024x720p 高清 1920x1080i (隔行扫描) 也属于高清 1920x1080p 全高清 3840x2160,7680x4320 超(高)清 ...

  5. 慕课网-安卓工程师初养成-6-3 如何使用 Java 中的数组

    来源:http://www.imooc.com/code/1525 Java 中操作数组只需要四个步骤: 1. 声明数组 语法:  或者  其中,数组名可以是任意合法的变量名,如: 2. 分配空间 简 ...

  6. oracle中的case when then else end 用法

    Case when 的用法,简单Case函数 简单CASE表达式,使用表达式确定返回值. 语法: CASE search_expression WHEN expression1 THEN result ...

  7. lintcode-【简单题】链表求和

    题目: 你有两个用链表代表的整数,其中每个节点包含一个数字.数字存储按照在原来整数中相反的顺序,使得第一个数字位于链表的开头.写出一个函数将两个整数相加,用链表形式返回和. 样例: 给出两个链表 3- ...

  8. 2016-08-15: C++ traits

    #include <stdio.h> template <typename T> struct TraitsHelper { static const bool isPoint ...

  9. 第五百八十四天 how can I 坚持

    好累啊,不知道怎么搞的,也没干啥啊,学习学的..不会吧. 哎. 吃粉蒸吃的都快吃吐了,得休息段时间,哈哈 没想象中的那么简单啊,太难了,哎,怎么考,压力啊.哎,也没啥. 洗澡睡觉,先休息.

  10. LESS 学习记录(简单入门)

    什么是 LESS LESS是一种动态样式语言,属于 CSS 预处理语言的一种.它使用类似 CSS 的语法,但是 赋予了动态语言的特性,比如变量.继承.运算.函数等,方便 CSS 的编写和维护. 使用 ...