javascript 中的 iframe 和弃用方法

Iframes and Deprecated methods in javascript

我正在 LAMP 堆栈上构建一个经典的 post 相关 cms,作为一个项目在未来的面试中展示并有可能找到工作。我想构建一个富文本编辑器。经过对 r/javascript 和堆栈溢出的一些研究,我得出了一些结论。

  1. 不要使用“contentEditable=true”标志,因为根据其中一项 CKEditor 的开发者 不是最优的
  2. 普遍的共识是使用 iframe,因为它具有隔离性 提供。
  3. 是的,我知道我不会自己构建下一个 CKEditor,它需要 多年经验远比我丰富的人,我只想学习 关于 Javascript API。
  4. 一般来说,我想使用 vanilla 版本的语言 堆叠以便更好地理解它们。

获得简单富文本编辑器的 'easy' 方法是使用 execCommand,但它已过时。我想出的是这样的:

function formatBold(){
  var selection = document.getSelection().toString();
  var originalString = document.getElementById("post-body-editor").innerHTML;
  document.getElementById("post-body-editor").focus();
  document.getElementById("post-body-editor").innerHTML = originalString.replace(selection, '<b>'+ selection +'</b>');
  return;
}
document.addEventListener('keydown', function(event) {
  if(event.ctrlKey && event.key === 'b'){
    formatBold();
    return;
  }
  return;
});

通过 HTML 按钮或按键调用该函数。我在 MDN 中看到有一种方法可以实现插入 Link、用粗体格式化文本等。问题是。我看到一些(如果不是很多)标记为 deprecated 的方法,但它们似乎有效。我应该使用它们还是让它自己工作,如上所示?我意识到这不是最优雅的解决方案,但我相信它适合我的水平。也感谢任何文章或其他阅读 material。

编辑:格式化

If the question is just about using deprecated/obsolete features, the answer is: don't use. Though, I doubt execCommand would never really be removed from the browsers, that would break tons of existing pages ... If you really want to create a WYSIWYG editor, you've to dive deep in the world of DOM. In that world use of innerHTML is exceptional, you would work with Nodes and ShadowRoot etc.

Teemu 在上面的评论中回答了。