JavaScript 往文档写入新内容

Document 对象提供open()用于打开新文档以准备执行写入操作,并提供write()方法和writeIn()方法用于写入新内容。

这些动作完成后,可以使用close()方法来关闭该文档。open()方法的语法如下: open([mimeType][,replace])其中参数mimeType 指定发送到窗口的MIME 类型,如text/html、image/jpeg 等。

MIME 类型是在Internet 上描述和传输多媒体数据的规范。

在浏览器参数设置的辅助应用程序列表中已简单描述MIME 类型,它是用斜杠分隔的一对数据类型。

将某个MIME 类型以参数传入open()方法即是通知浏览器准备接收该类型的数据,接收完成后,浏览器调用其相关功能将该数据显示出来。

各浏览器支持的 MIME 类型会有所区别,一般来说,常见的MIME 类型有超文本标记语言文本text/html、普通文本text/plain、RTF 文本application/rtf、GIF 图形image/gif、JPEG图形image/jpeg、au 声音文件audio/basic、MIDI 音乐文件audio/midi 或audio/x-midi、RealAudio音乐文件audio/x-pn-realaudio、MPEG 文件video/mpeg、AVI 文件video/x-msvideo 等。

open()方法默认(缺省)的MIME 类型参数为text/html,在文档载入浏览器前,使用脚本组合典型的数据类型,包括HTML 页面上的任何图片。

如果当前浏览器不支持以参数传入的特定MIME 类型,则浏览器搜索支持该MIME 类型的插入件。

如果目标插入件存在,则浏览器装入该插入件,并在文档载入时将要写入的内容传入该插入件。

open()方法接收的第二个可选参数replace 表示待写入的目标文档是否替换浏览器历史列表中当前文档。

注意:在IE3 中open()方法不接收任何参数,IE4 中仅接收MIME 类型为text/html 的参数,IE5+和NN4+支持第二个可选参数;

若使用open()方法打开文档成功,则该方法返回非null 值,若由于某种原因打开文档失败,则返回null 值。

使用 open()方法打开文档后,可调用write()和writeIn()方法往其中写入新内容并在浏览器窗口中显示出来。

write()和writeIn()方法本质上并无大的不同,唯一的区别在于后者在发送给文档的内容末尾添加换行符,下面两种表达方式等价:document.write(targetStr+"<br>"); document.writeIn(targetStr);实际上,一旦文档载入窗口或框架完成后,使用write()和writeIn()方法可在不重载或不重写整个页面的情况下改变文本节点和文本域textarea 对象的内容。

一般情况下,脚本在当前文档收集用户输入(或动作)和浏览器环境信息,然后通过一定的算法产生表示另一个窗口(或框架)布局和内容的字符串变量,并使用write()和writeIn()方法将目标字符串变量写入新窗口或者多框架窗口中的某个框架中。

该种方式允许使用任意多个document.write()和document.writeIn()方法写入任意多个字符串变量,同时可通过一个组合字符串调用这两种方法来写入。

实际中采用何种方法写入目标字符串取决于浏览器环境和脚本样式。

在组合字符串过程中,可通过加号“+”或逗号“,”将字符串连接起来,例如下列两种方式均合法:document.write(targetStr+"<br>"); document.write(targetStr,"<br>");考察如下将相关字符串写入框架集中指定框架的实例,演示了“学生注册程序”中如何收集学生相关信息并在目标框架显示。

其中框架集文档“main.html”的代码如下:[code]

Sample Page! [/code]其中左框架载入的文档为“leftmain.html”,该文档收集学生信息如姓名、性别、年级和学号等。

其代码如下:[code]

Sample Page!

学籍注册程序

姓名 :

性别 : male female

年级 : Class 1 Class 2 Class 3 Class 4 Class 5 Class 6

学号 :

[/code]右框架为待写入新内容的目标框架,其载入的文档“target.html”代码为:[code] Sample Page!

待写入的目标框架

[/code]在上述原始页面中,单击“写新内容进右框架”按钮,触发左框架文档“leftmain.html”中WriteContent()函数将通过当前框架文档MyForm表单收集的学生信息写入右框架文档中,同时更新页面。

查看此时右框架所载入文档的源代码,如下所示:

写入的新内容 :<br><br>姓名 : ZangPu<br>性别 : male<br>性别 : class 1<br>姓名 : 20010401 4104<br>除了可以往窗口(或框架)所载入文档中写入普通字符串外,还可写入HTML 格式的代码来生成标准的HTML 文档。

可以看出,该文档为标准的HTML 文档,但写入HTML 标记如时要注意写入的格式,如document.write("")语句将会出现错误,因为浏览器会将脚本标记的尾标记解释为进行写操作脚本的结束符。

可通过将尾标记分成几个部分的方式解决,可将上句改写如下:document.write("<head><\/head>");在使用组合字符串进行文档写操作时,容易出现难于觉察的错误,JavaScript 脚本程序初学者应尽量使用多个write()和writeIn()方法多次写入相关内容的方式,避免字符串相加时出现错误。

通过 Document 对象的open()方法或者write()方法打开一个到目标窗口或框架的输出流并往文档写入新内容的过程结束后,应使用其close()方法来关闭该输出流。

关闭输出流步骤相当重要,如果不关闭,则后续的写入操作会将新内容添加到该输出流对应的文档底部。

当 document.close()方法调用后,往指定窗口或框架添加的部分或全部数据才能正常显示,特别是open()方法接收的MIME 类型参数为GIF 图形image/gif 或JPEG 图形mage/jpeg时,使用close()方法后图片才能正确显示出来。