2010-06-01 7 views
1

J'ai un problème lorsque le fichier source JavaScript est en cours de chargement dans IE6, Chrome, Firefox, Safari et Opera. Mais le même fichier source ne se charge pas dans IE8.Le fichier source JavaScript ne se charge pas dans IE8 Popup

En conséquence de cela, le HTML is not being replaced in the Popup et je reçois une erreur dans IE8 pop-up dire tinyMCE is not defined

J'ai parlé Formatting this JavaScript Line et question résolu sur tous les navigateurs sauf IE8.

La fonction JavaScript est la suivante:

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'); 

    var winDoc = winId.document; 
    var sEl = winDoc.createElement("script"); 
    sEl.src = "../js/tiny_mce/tiny_mce.js";/*TinyMCE source file*/ 
    sEl.type="text/javascript"; 
    winDoc.getElementsByTagName("head")[0].appendChild(sEl); 

    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() {/*using setTimeout to wait for the JS source file to load*/ 
     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(); 
    }, 300); 
} 

Informations complémentaires:

aidez-moi s'il vous plaît avec celui-ci.

Répondre

1
  1. Pourquoi utilisez-vous des fonctions DOM réelles pour ajouter la balise <script> qui comprend tinymce.js mais tout le reste est d'utiliser document.write?

  2. Je pense que c'est aussi là que votre problème est, comme <head> est dans les <html>, qui n'a pas encore fermé où vous voulez ajouter ladite étiquette <script>.

  3. Sinon, vous pouvez utiliser la balise <script> existante dans la fenêtre contextuelle pour ajouter le code qui inclut le fichier javascript externe requis. Si cela a du sens.

Donc, en gros je dis, essayez de la même façon que tout le reste dans votre script, en utilisant document.write.

(ajout rapide) Je ne dis pas que c'est la «meilleure» façon de faire cela, je recommanderais de créer une page réelle au lieu de la créer dynamiquement dans le popup. Mais dans ce scénario, je pense que ce que j'ai écrit plus tôt pourrait résoudre le problème que vous avez.

+0

J'essayais des options! Merci beaucoup. Votre réponse m'a aidé. – dkris

+0

@dkris: qu'avez-vous fait exactement pour résoudre le problème? –

+0

@Srini J'ai fini par le faire [http://stackoverflow.com/questions/2943965/ie8-crashes-strangely-on-javascript-popup] – dkris