这适用于IE,但在Firefox中它很奇怪:
如果firefox正常打开,设计模式不起作用,但如果我在上面设置断点
this.editor.contentWindow.document.designMode =“开”;
行,然后释放它(在它打破之后),设计模式正常工作!
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
<script type="text/javascript">
TheEditor = function() {
this.editor = null;
this.mainDiv=document.getElementById("mainDiv");
}
TheEditor.prototype = {
InitializeEditor: function() {
this.editor=document.createElement('iframe');
this.editor.frameBorder=1;
this.editor.width = "500px";
this.editor.height="250px";
this.mainDiv.appendChild(this.editor);
this.editor.contentWindow.document.designMode = "On";
}
}
window.onload = function(){
obj = new TheEditor;
obj. InitializeEditor();
}
</script>
</head>
<body>
<div id="mainDiv">
</div>
</body>
</html>
答案 0 :(得分:0)
我不完全理解为什么,但打开(可选择编写内容)和关闭文档解决了问题(至少在OSX上的FF5中):
this.editor.contentWindow.document.open();
// optionally write content here
this.editor.contentWindow.document.close();
this.editor.contentWindow.document.designMode = "on";
我的另一个想法是围绕designMode = "on"
语句设置超时(我记得过去必须为FF做这个),但它没有用。
我认为这与FF在IFRAME中加载“某些东西”有关,而且还没有准备好打开designMode。
我猜你也可以使用DIV上的contentEditable="true"
属性。
无论如何,我希望这有帮助。
答案 1 :(得分:0)
我认为这是因为还没有创建contentDocument,我认为你也可以在这个事件中设置iframe的onload事件并设置设计模式,因为在加载页面时调用了这个事件,所以contentDocument存在!