我遇到一个问题,即在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(/&/gi, "&");
hiddenFrameHTML = hiddenFrameHTML.replace(/</gi, "<");
hiddenFrameHTML = hiddenFrameHTML.replace(/>/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(/&/gi, "&");
hiddenFrameHTML2 = hiddenFrameHTML2.replace(/</gi, "<");
hiddenFrameHTML2 = hiddenFrameHTML2.replace(/>/gi, ">");
winId.document.write(hiddenFrameHTML2);
winId.document.write('</body></html>\n');
winId.document.close();
}, 300);
}
其他信息:
请帮我解决这个问题。
答案 0 :(得分:1)
为什么使用实际的DOM函数添加包含tinymce.js的<script>
标记,但其他所有标记都使用document.write?
我认为这也是您的问题所在,因为<head>
在<html>
范围内,而您尚未关闭要添加所述<script>
标记的位置。
否则,您可以使用弹出窗口中的现有<script>
标记添加包含所需外部JavaScript文件的代码。如果这是有道理的。
所以,基本上我是说,使用document.write
尝试与脚本中的其他内容相同的方式。
(快速添加)我不是说这是“最好”的方法,我建议创建一个实际的页面,而不是在弹出窗口中动态创建一个。但在这种情况下,我认为我之前写的内容可能会解决您遇到的问题。