javascript 中的 iframe 和弃用方法
Iframes and Deprecated methods in javascript
我正在 LAMP 堆栈上构建一个经典的 post 相关 cms,作为一个项目在未来的面试中展示并有可能找到工作。我想构建一个富文本编辑器。经过对 r/javascript 和堆栈溢出的一些研究,我得出了一些结论。
- 不要使用“contentEditable=true”标志,因为根据其中一项
CKEditor 的开发者 不是最优的
- 普遍的共识是使用 iframe,因为它具有隔离性
提供。
- 是的,我知道我不会自己构建下一个 CKEditor,它需要
多年经验远比我丰富的人,我只想学习
关于 Javascript API。
- 一般来说,我想使用 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 在上面的评论中回答了。
我正在 LAMP 堆栈上构建一个经典的 post 相关 cms,作为一个项目在未来的面试中展示并有可能找到工作。我想构建一个富文本编辑器。经过对 r/javascript 和堆栈溢出的一些研究,我得出了一些结论。
- 不要使用“contentEditable=true”标志,因为根据其中一项 CKEditor 的开发者 不是最优的
- 普遍的共识是使用 iframe,因为它具有隔离性 提供。
- 是的,我知道我不会自己构建下一个 CKEditor,它需要 多年经验远比我丰富的人,我只想学习 关于 Javascript API。
- 一般来说,我想使用 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 在上面的评论中回答了。