我得到了一部分嵌入在HTML中的JavaScript代码(由服务器端生成),看起来像这样:
function winWriteMail2(){
var win = open('','wininfo', 'width=400,height=300,scrollbars=yes,resizable=yes');
win.document.open();
win.document.write('<HTML><HEAD><META http-equiv="Content-type" content="text/html; charset=iso-8859-2"><LINK rel="stylesheet" type="text/css" href="/css/main.css">');
win.document.write('<scr' + 'ipt language="javascript" type="text/javascript" src="/js/JSFILE.js"></scr' + 'ipt>');
win.document.write('</HEAD><BODY BGCOLOR="#f7f3e7">');
<!-- window content goes here -->
win.document.write('</BODY></HTML>');
win.document.close();
}
这段代码会在点击一个元素时被执行。
对我来说有问题的部分是包含javascript文件 - 在Firefox和Chrome中可以正常工作,但是IE(如我测试的7和8)的行为很奇怪。有了包含
JSFILE
的那一行,单击后打开的窗口是空的,CPU占用率为100%,唯一的方法是关闭IE。有人可以帮忙处理这个问题吗?也许我应该使用其他方法将javascript文件插入其中?
我尝试过不使用
win.document.write()
,而改用DOM操作方法,在win.document.close()
之后放置这部分代码:h = win.document.getElementsByName('head')[0];
js = document.createElement('script');
js.src = '/js/JSFILE.js';
h.appendChild(js);
但是,即使在Firefox中进行检查(使用Firebug进行检查),代码也没有加载(甚至看不到它)。
经过一些检查,我发现问题是由具有定义的 src =
属性的<script>
元素引起的。如果我添加内联脚本,例如:
<script type='text/javascript'>alert('foo')</script>
在我的
document.write()
中,窗口打开,警告框弹出,一切正常。但使用
<script type='text/javascript' src='/js/foo.js'></script>
当打开新窗口时,IE会停顿,并且一直使用100%的CPU。