里面的javascript代码document.write()

前端之家收集整理的这篇文章主要介绍了里面的javascript代码document.write()前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我得到了嵌入 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");

您需要在要附加的同一文档中创建脚本元素.

猜你在找的JavaScript相关文章