2010-05-31 92 views
4

弹出窗口创建后我正面临一个奇怪的问题onclick。弹出窗口打开,但在IE8上立即挂起(在包括IE6在内的所有其他浏览器上工作正常)。但是,如果在JavaScript代码中添加alert框,则弹出窗口可以正常工作。IE8在JavaScript弹出时奇怪地崩溃

我使用**https**,而不是**http**,我感觉弹出无法加载,因为的SSL JS文件。

这里是如何我生成的onclick事件:

<a id="forgotPasswordLink" href="#" onclick="openSupportPage();"> Some Text </a> 

onclick函数的定义是这样的:

 function openSupportPage() { 
      var features = "width=700,height=400,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes"; 
      var winId = window.open('', '', features); 
      winId.focus(); 
      winId.document.open(); 
      winId.document.write('<html><head><title>' + document.title + '</title><link rel="stylesheet" href="./css/default.css" type="text/css">\n'); 
      var is_ie6 = (
      window.external && typeof window.XMLHttpRequest == "undefined"); 
      alert(is_ie6);/*The JS include below*/ 
          /*works in popup only with this alert box.*/ 
          /*else IE8 Hangs*/ 
       winId.document.write('<script src="../js/tiny_mce/tiny_mce.js" type="text/javascript">Script_IE8</script>\n'); 


      winId.document.write('<script type="text/javascript">\n'); 
      winId.document.write('function inittextarea() {\n'); 
      winId.document.write('tinyMCE.init({ \n'); 
      winId.document.write('elements : "content",\n'); 
      winId.document.write('theme : "advanced",\n'); 
      winId.document.write('readonly : true,\n'); 
      winId.document.write('mode : "exact",\n'); 
      winId.document.write('theme : "advanced",\n'); 
      winId.document.write('readonly : true,\n'); 
      winId.document.write('setup : function(ed) {\n'); 
      winId.document.write('ed.onInit.add(function() {\n'); 
    winId.document.write('tinyMCE.activeEditor.execCommand("mceToggleVisualAid");\n'); 
      winId.document.write('});\n'); 
      winId.document.write('}\n'); 
      winId.document.write('});}</script>\n'); 
      winId.document.write('</head><body onload="inittextarea()">\n'); 
      winId.document.write(' \n'); 
      var hiddenFrameHTML = document.getElementById("HiddenFrame").innerHTML; 
      hiddenFrameHTML = hiddenFrameHTML.replace(/&amp;/gi, "&"); 
      hiddenFrameHTML = hiddenFrameHTML.replace(/&lt;/gi, "<"); 
      hiddenFrameHTML = hiddenFrameHTML.replace(/&gt;/gi, ">"); 
      winId.document.write(hiddenFrameHTML); 
      winId.document.write('<textarea id="content" rows="10" style="width:100%">\n'); 
      winId.document.write(document.getElementById(top.document.forms[0].id + ":supportStuff").innerHTML); 
      winId.document.write('</textArea>\n'); 
      var hiddenFrameHTML2 = document.getElementById("HiddenFrame2").innerHTML; 
      hiddenFrameHTML2 = hiddenFrameHTML2.replace(/&amp;/gi, "&"); 
      hiddenFrameHTML2 = hiddenFrameHTML2.replace(/&lt;/gi, "<"); 
      hiddenFrameHTML2 = hiddenFrameHTML2.replace(/&gt;/gi, ">"); 
      winId.document.write(hiddenFrameHTML2); 
      winId.document.write('</body></html>\n'); 
      winId.document.close(); 
    } 

请帮我在这一个。如有需要,我可以提供更多信息。

我都提到了这些职位 已经:

其他信息

+0

为什么JavaScript在两个不同的地方? '。/'当前目录和'../'父目录 – Nalum 2010-05-31 13:59:06

+2

IE以何种方式崩溃并不奇怪?当然,看到它按预期工作可能会更陌生...... – 2010-05-31 14:00:14

+0

@Nalum我为这些浏览器使用了不同的JS文件。但我可以合并它们。但我可以合并它们,我试着用一个JS文件,并没有帮助 – dkris 2010-05-31 14:04:38

回答

0

这里是一个解决我的问题,并在IE6,IE7,IE8,Chrome浏览器,火狐,Safari和Opera的作品最终的工作功能。

function openSupportPage() { 
    var features="width=700,height=400,status=yes,toolbar=no,menubar=no,location=no,scrollbars=yes";    
    var winId=window.open('','',features); 
    winId.document.open(); 
    winId.document.write('<html><head><title>' + document.title + '</title><link rel="stylesheet" href="../css/default.css" type="text/css">\n'); 

    window.setTimeout(function() { 
     winId.document.write(
      '<script src="../js/tiny_mce/tiny_mce.js" type="text/javascript"></scr' + 'ipt>\n' 
     ); 
    }, 10); 

    winId.document.write('<script type="text/javascript">\n'); 
    winId.document.write('function inittextarea() {\n'); 
    winId.document.write('tinyMCE.init({ \n'); 
    winId.document.write('elements : "content",\n'); 
    winId.document.write('theme : "advanced",\n'); 
    winId.document.write('readonly : true,\n'); 
    winId.document.write('mode : "exact",\n'); 
    winId.document.write('theme : "advanced",\n'); 
    winId.document.write('readonly : true,\n'); 
    winId.document.write('setup : function(ed) {\n'); 
    winId.document.write('ed.onInit.add(function() {\n'); 
    winId.document.write('tinyMCE.activeEditor.execCommand("mceToggleVisualAid");\n'); 
    winId.document.write('});\n'); 
    winId.document.write('}\n'); 
    winId.document.write('});}</script>\n'); 

    window.setTimeout(function() { 
     winId.document.write('</head><body onload="inittextarea()">\n'); 
     winId.document.write(' \n'); 
     var hiddenFrameHTML = document.getElementById("HiddenFrame").innerHTML; 
     hiddenFrameHTML = hiddenFrameHTML.replace(/&amp;/gi, "&"); 
     hiddenFrameHTML = hiddenFrameHTML.replace(/&lt;/gi, "<"); 
     hiddenFrameHTML = hiddenFrameHTML.replace(/&gt;/gi, ">"); 
     winId.document.write(hiddenFrameHTML); 
     winId.document.write('<textarea id="content" rows="10" style="width:100%">\n'); 
     winId.document.write(document.getElementById(top.document.forms[0].id + ":supportStuff").innerHTML); 
     winId.document.write('</textArea>\n'); 
     var hiddenFrameHTML2 = document.getElementById("HiddenFrame2").innerHTML; 
     hiddenFrameHTML2 = hiddenFrameHTML2.replace(/&amp;/gi, "&"); 
     hiddenFrameHTML2 = hiddenFrameHTML2.replace(/&lt;/gi, "<"); 
     hiddenFrameHTML2 = hiddenFrameHTML2.replace(/&gt;/gi, ">"); 
     //hiddenFrameHTML2 = hiddenFrameHTML2.replace(/&amp;/gi, "&").replace(/&lt;/gi, "<").replace(/&gt;/gi, ">"); 
     winId.document.write(hiddenFrameHTML2); 
     winId.document.write('</body></html>\n'); 
     winId.document.close(); 
    }, 300); 
} 

我得到了很多的帮助,从这些问题:

谢谢大家。