iframe和firefox问题

时间:2012-08-10 08:05:20

标签: javascript html iframe rich-text-editor

我正在使用HTML / Javascript设计一个简单的富文本编辑器。它使用iframe。虽然它在IE6(以及可能更新的IE版本)中运行良好,但它在FireFox中被打破了。无法以任何方式编辑或使用iframe。

HTML <body>

<input type="button" id="bold" class="Button" value="B" onClick="fontEdit('bold');">
<input type="button" id="italic" class="Button" value="I" onClick="fontEdit('italic');">
<input type="button" id="underline" class="Button" value="U" onClick="fontEdit('underline');">
<hr>
<iframe id="TextEditor" class="TextEditor"></iframe>

Javascript(适用于IE)

TextEditor.document.designMode="on";
TextEditor.document.open();
TextEditor.document.write('<head><style type="text/css">body{ font-family:arial; font-size:13px; }</style> </head>');
TextEditor.document.close();
TextEditor.focus();

以上脚本使iframe在IE中可编辑。在FF中无法这样做。所以我改变了FF版本的一些东西 -

Javascript(适用于FF)

id("TextEditor").contentWindow.designMode="on";
id("TextEditor").contentWindow.open(); //this line is responsible for pop-ups
id("TextEditor").contentWindow.write('<head><style type="text/css">body{ font-family:arial; font-size:13px; }</style> </head>'); //this line throws error: id("TextEditor").contentWindow.write is not a function at the FF debug console.
id("TextEditor").contentWindow.close();
id("TextEditor").focus();

此部分代码使FF引发弹出警报,并将空白页作为目标。它还是坏了。以下内容包括id()fontEdit() -

等常规功能
function fontEdit(x,y){
  TextEditor.document.execCommand(x,"",y);
  TextEditor.focus();
}

function id(id){
  return document.getElementById(id);
}

function tag(tag){
  return document.getElementsByTagName(tag);
}

我确定FF不会以这种方式处理iframe。那么如何将iframe用作富文本编辑器并且不显示弹出窗口。请尽量避免使用jQuery,因为我还没有那么好。这就是id()tag()等自定义函数存在的原因。

而且,我知道还有其他免费的 me 文本编辑器供下载和使用,所以请不要向我推荐任何此类解决方案,不要问我为什么帮助我解决问题时才回答。

1 个答案:

答案 0 :(得分:2)

FF会以空白页面作为目标来激发弹出警报,因为您正在调用函数window.open,而是拨打document.open

window.open:打开一个新的浏览器窗口。

document.open:它会打开一个输出流,以收集来自任何document.write()document.writeln()方法的输出。执行所有写入后,document.close()方法将导致写入输出流的任何输出显示。 注意:如果目标中已存在某个文档,则该文档将被清除。

请参阅The open() method

这应该对你有用:

id("TextEditor").contentWindow.document.designMode="on";
id("TextEditor").contentWindow.document.open(); //this line is responsible for pop-ups
id("TextEditor").contentWindow.document.write('<head><style type="text/css">body{ font-family:arial; font-size:13px; }</style> </head>'); //this line throws error: id("TextEditor").contentWindow.write is not a function at the FF debug console.
id("TextEditor").contentWindow.document.close();