JavaScript源文件未在IE8 Popup中加载

时间:2010-06-01 14:04:21

标签: javascript internet-explorer-8 popup tinymce

我遇到一个问题,即在IE6,Chrome,Firefox,Safari和Opera的弹出窗口中加载JavaScript源文件。但是在IE8中没有加载相同的源文件。

因此HTML is not being replaced in the Popup我在IE8弹出窗口中收到错误tinyMCE is not defined

我已提到Formatting this JavaScript Line并解决了除IE8以外的所有浏览器的问题。

JavaScript函数如下:

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

其他信息

     

请帮我解决这个问题。

1 个答案:

答案 0 :(得分:1)

  1. 为什么使用实际的DOM函数添加包含tinymce.js的<script>标记,但其他所有标记都使用document.write?

  2. 我认为这也是您的问题所在,因为<head><html>范围内,而您尚未关闭要添加所述<script>标记的位置。

  3. 否则,您可以使用弹出窗口中的现有<script>标记添加包含所需外部JavaScript文件的代码。如果这是有道理的。

  4. 所以,基本上我是说,使用document.write尝试与脚本中的其他内容相同的方式。

    (快速添加)我不是说这是“最好”的方法,我建议创建一个实际的页面,而不是在弹出窗口中动态创建一个。但在这种情况下,我认为我之前写的内容可能会解决您遇到的问题。