代码之家  ›  专栏  ›  技术社区  ›  dkris

IE8在javascript弹出窗口上意外崩溃

  •  4
  • dkris  · 技术社区  · 14 年前

    弹出窗口创建后,我面临一个奇怪的问题 onclick . 弹出窗口会打开,但会立即挂在IE8上(适用于所有其他浏览器,包括IE6)。但在添加 alert 如javascript代码所示,弹出窗口工作正常。

    我正在使用 **https** 而不是 **http** 我觉得Popup无法加载JS文件,因为 SSL .

    以下是我如何生成 点击 事件:

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

    这个 点击 函数的定义方式如下:

            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();
        }
    

    请帮我做这个。如果需要的话,我可以提供更多的信息。

    我提到过这些职位 已经:

    附加信息 :

    1 回复  |  直到 14 年前
        1
  •  0
  •   Community paulsm4    7 年前

    这里是解决我问题的最后一个工作功能,它在IE6、IE7、IE8、Chrome、Firefox、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);
    }
    

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

    谢谢大家。