欢迎光临

木子屋

标题: window.open新建空白窗口动态写入xml示例

作者: dnawo

日期: 2012-02-15 10:07 AM

分类: 脚本语言

内容: window.open新建空白窗口动态写入xml：
复制内容到剪贴板 程序代码var win = window.open("");
win.document.write("<xml><item><name>木子屋</name><url>http://www.mzwu.com/</url></item></xml>");
win.document.close();
这段代码能在新窗口中写入xml字符，但IE9、Firefox10、Chorme17都将它当成普通的html文档来解析，不能对xml节点进行展开与收缩。
我想问题的关键是脚本没有告诉浏览器文档类型为text/xml，让浏览器误以为是普通的text/html文档，那怎么告诉浏览器文档类型呢？想起了document.open有个mimetype参数，修改后代码如下：
复制内容到剪贴板 程序代码var win = window.open("");
var doc=win.document.open("text/xml");
doc.write("<xml><item><name>木子屋</name><url>http://www.mzwu.com/</url></item></xml>");
doc.close();
问题依旧，什么原因呢？翻看《JavaScript权威指南》第四版，在P636中对mimetype参数说明如下：
引用内容一个可选的字符串参数，指定了要写入document并显示出来的数据的类型。该参数的值应该是浏览器可以识别的标准MIME类型之一(在Netscape中即"text/html"、"text/plain、"text/gif""image/jped"和"image/x-bitmap")，或者是安装到浏览器上的某种插件可以处理的MIME类型。如果省略了这个参数，它的默认值是"text/html"。IE3将忽略这个参数，它总是假定文档的类型是"text/html"。W3C DOM标准中的Document.open()方法不支持该参数。
看来document.open(mimetype)也行不通，最终折衷解决方法：
复制内容到剪贴板 程序代码window.open("data:text/xml,"+encodeURIComponent("<xml><item><name>木子屋</name><url>http://www.mzwu.com/</url></item></xml>"));
测试结果：IE9无法显示、Chorme17中文会乱码、Firefox10显示正常。
参考文章
[1].Writing an E4X XML primitive to a new window shows as text/html
[2].How to write an E4X XML primitive to a new text/xml window in Mozilla?
[3].write xml to a new window

+ 查看当前日志评论 (0)

登录

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.848 ms

返回

标题: window.open新建空白窗口动态写入xml示例

你没有权限发表评论

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.848 ms

返回

暂无评论

返回

────────────

木子屋

PJBlog3 v3.2.9.518 Inside.

Processed In 0.879 ms

返回