我得到了嵌入
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检查也不会显示,甚至可以看到它).
经过一些检查,我发现问题是由< script>元素与src =属性定义.如果我添加一个内联的脚本,像:
<script type='text/javascript'>alert('foo')</script>
在我的document.write()中,窗口打开,警告框显示,一切都正常.
但使用a
<script type='text/javascript' src='/js/foo.js'></script>
IE打开新窗口时,会停止使用100%的cpu.
解决方法
这段代码为我工作:
function winWriteMail2(){ var win = open('',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('</HEAD><BODY BGCOLOR="#f7f3e7">'); win.document.write('this is the body content'); win.document.write('</BODY></HTML>'); win.document.close(); var h = win.document.getElementsByTagName("head")[0]; var js = win.document.createElement("script"); js.type = "text/javascript"; js.src = "js/scriptfile.js"; h.appendChild(js); }
这是我需要改变你的代码,使其工作:
//From var js = document.createElement("script"); //To var js = win.document.createElement("script");
您需要在要附加的同一文档中创建脚本元素.