2010-05-31 3 views
4

У меня возникла странная проблема после создания всплывающего окна onclick. Всплывающее окно открывается, но сразу же висит на IE8 (отлично работает во всех других браузерах, включая IE6). Но при добавлении поля alert в качестве показа в коде JavaScript всплывающее окно отлично работает.IE8 неожиданно падает на JavaScript Всплывающее окно

Я использую **https** и не **http** и я чувствую всплывающее окно не может загрузить файл JS из SSL.

Вот как я порождающая 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

+2

, когда IE разбивается так, что это не странно? конечно, может быть странно видеть, что он работает так, как ожидалось ... –

+0

@Nalum Я использую разные JS-файлы для этих браузеров. Но я мог бы объединить их. Но я мог объединить их, я попробовал с одним JS-файлом, и это не помогло. – dkris

ответ

0

Вот окончательный рабочий функция, решить мою проблему и работает в 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); 
} 

Я получил большую помощь от этих вопросов:

Спасибо всем.

Смежные вопросы