我正在尝试权衡在制作我自己的富文本/所见即所得编辑器时使用<div>
vs.的利弊。<iframe>
在这样做时,为什么我不能只使用contenteditable <div>
,为什么这么多人更喜欢<iframe>
?
背景讨论:据我所知,制作所见即所得编辑器的一种常见方法是使 div 或 iframe内容可编辑,然后execCommand
在包含 div 或 iframe 正文的文档上执行以使其文本粗体或其他内容。
这是HTML:
<html><!--parent doc-->
<body><button type="button" class="btn-bold">Bold</button>
<div contenteditable="true"></div>
</body>
</html>
与:
<html><!--parent doc-->
<body><button type="button" class="btn-bold">Bold</button>
<iframe>
<body contenteditable="true"></body>
</iframe>
</body>
</html>
和JS:
$(document.body).on('click', '.btn-bold', function(){
document.execCommand('bold', false, null);
});
与:
$(document.body).on('click', '.btn-bold', function(){
window.frames[0].document.body.execCommand('bold', false, null);
});
看起来大多数制作精良的富文本编辑器都使用 iframe。虽然我可以轻松地让这个contenteditable /execCommand
组合在 Webkit 浏览器中的 div/iframe 上工作,但我在尝试让 iframe 在 Firefox 中工作时遇到了地狱般的时光。我不得不求助于将脚本和样式表加载到 iframe 和各种废话来复制我可以使用基于 div 的版本轻松完成的任务。因此,<div>
基于 - 的方法似乎更可取。我重新考虑有什么强有力的理由吗?