tinymce - TinyMCE 在调用 execCommand 时抢了焦点
问题描述
我的 HTML 页面上有一堆输入,加上一个被 TinyMCE 编辑器替换的文本区域。加载此页面的情况有多种,并且每次输入之一都必须获得焦点。但是当 TinyMCE 被初始化时,它只是窃取了焦点。我将问题缩小到一个 execCommand 调用,该调用在 TinyMCE 中设置了默认字体大小。
该问题可以在此简化代码中重现:
<!DOCTYPE html>
<html>
<head>
<script src="https://cdn.tiny.cloud/1/no-api-key/tinymce/5/tinymce.min.js" referrerpolicy="origin"></script>
<script>
tinymce.init({
selector: 'textarea',
setup: function(editor) {
editor.on('init', function() {
this.execCommand("fontSize", false, "14pt"); // <<---- This line causes the TinyMCE editor to steal the focus!
});
}
});
</script>
</head>
<body>
<input id="inp" />
<textarea>Hello, World!</textarea>
<script>
document.getElementById("inp").focus();
</script>
</body>
</html>
我已经在 Firefox、Chrome 和 Edge 中对此进行了测试,并且所有这些都发生了同样的问题。知道如何防止这种情况吗?一旦 TinyMCE 完成初始化,我不想再次设置焦点,因为此时页面已滚动到错误的位置。
解决方案
当您发出更改字体大小的命令时,您实际上并没有在 TinyMCE 编辑器中设置默认字体。您正在触发这些命令,但如果有任何内容要加载到编辑器中,则不会应用此字体信息。
要在 TinyMCE 中设置默认字体信息,请使用 CSS,通过content_css
或content_style
配置选项:
https://www.tiny.cloud/docs/configure/content-appearance/#content_style
https://www.tiny.cloud/docs/configure/content-appearance/#content_css
以下是显示两种方法之间差异的示例。
在这个例子中:https ://fiddle.tiny.cloud/oAhaab
...发出设置默认字体系列和大小的命令,但它们不适用于随后加载到编辑器中的内容。它们被解雇,但最终不会应用于加载到编辑器中的内容。
而在此示例中:https ://fiddle.tiny.cloud/nAhaab
...默认字体信息按预期通过 CSS 应用于加载的内容。
推荐阅读
- python - 如何处理管道中 OneHotEncoder 的不同类别?
- c++ - POD 结构(相同类型的成员):成员是否位于连续的内存位置?
- c# - 具有不同字体的 Xfinium 多行单元格
- c# - 从 .NET Core 应用程序使用 IBMMQ amqmdnet.dll
- ionic-framework - ionic 4 如何动态添加 svg 图标 - {title: 'About', url: '/about' , icon:'person'}
- mysql - 当数量等于0时如何隐藏药物?
- r - 如何使用带有geom =“line”的stat_summary在ggplot2中绘制NA间隙?
- python - 如何从 tfidfvectorizer 矩阵为 PCA 图中的数据点着色
- sql - 我想创建一个打印多个值的过程
- python - 如何在 Oozie 中安排一个独立的 Python 脚本