禁用 TinyMCE 4 插入 link 表单字段
TinyMCE 4 insert link form fields disabled
我正在使用 tinymce-rails gem,它使用 TinyMCE 4,我正在加载 link
插件,所有这一切都是在 after/in 彩框弹出窗口中启动的。
TinyMCE 编辑器工作正常,但 link 按钮会弹出一个对话框 add/edit 和 link,但是 none 字段除了 target 可供编辑。
下面是相关代码:
setup_new_message: ->
tinyMCE.init
selector: '.tinymce'
plugins: "textcolor link"
menubar: false
toolbar: "formatselect | fontselect | bold italic underline | forecolor | alignleft aligncenter alignright | bullist numlist | link"
height: 250
$(document).on 'focusin', (e) ->
if $(e.target).closest(".mce-window").length
e.stopImmediatePropagation()
我在其他 Whosebug question/answers 中找到了 $(document).on 'focusin' 但这对我不起作用。它确实触发了 e.stopImmediatePropagation()
但它并没有像每个人所说的那样工作。
有什么想法吗?提前致谢。
一旦我缩小了实际问题的范围,我就找到了答案,因为我正在将 TinyMCE 加载到 jquery.colorbox 弹出窗口中。 Colorbox 防止任何类型的 focus
event/action 在其定义的容器之外发生。当 TinyMCE 通过 iframe 弹出它的东西时,实际上并不在 colorbox 容器中。
修复很简单:在 colorbox 选项中设置 trapFocus: false
,一切正常。请理解,这意味着用户可以 tab out 聚焦的颜色框到叠加层后面的元素。
通过John Naegle on Whosebug
根据 TinyMCE 的版本,解决方案是:
$(document).on('focusin', function(e) {
var target = $(e.target);
if (target.closest(".mce-window").length || target.closest(".tox-dialog").length) {
e.stopImmediatePropagation();
target = null;
}
});
当然还有来自
的回答
TinyMCE5 和 MagnificPopup 兼容性:
$.magnificPopup.instance._onFocusIn = function( e ) {
try {
if( $( e.target ).attr( 'class' ).indexOf( 'tox-' ) >= 0 ) {
return true;
}
} catch( e ) {}
$.magnificPopup.proto._onFocusIn.call( this, e );
}
对于任何将 tinymce 放入 Material UI mui 对话框的人,请执行:
<Dialog disableEnforceFocus={true} ...>
我正在使用 tinymce-rails gem,它使用 TinyMCE 4,我正在加载 link
插件,所有这一切都是在 after/in 彩框弹出窗口中启动的。
TinyMCE 编辑器工作正常,但 link 按钮会弹出一个对话框 add/edit 和 link,但是 none 字段除了 target 可供编辑。
下面是相关代码:
setup_new_message: ->
tinyMCE.init
selector: '.tinymce'
plugins: "textcolor link"
menubar: false
toolbar: "formatselect | fontselect | bold italic underline | forecolor | alignleft aligncenter alignright | bullist numlist | link"
height: 250
$(document).on 'focusin', (e) ->
if $(e.target).closest(".mce-window").length
e.stopImmediatePropagation()
我在其他 Whosebug question/answers 中找到了 $(document).on 'focusin' 但这对我不起作用。它确实触发了 e.stopImmediatePropagation()
但它并没有像每个人所说的那样工作。
有什么想法吗?提前致谢。
一旦我缩小了实际问题的范围,我就找到了答案,因为我正在将 TinyMCE 加载到 jquery.colorbox 弹出窗口中。 Colorbox 防止任何类型的 focus
event/action 在其定义的容器之外发生。当 TinyMCE 通过 iframe 弹出它的东西时,实际上并不在 colorbox 容器中。
修复很简单:在 colorbox 选项中设置 trapFocus: false
,一切正常。请理解,这意味着用户可以 tab out 聚焦的颜色框到叠加层后面的元素。
通过John Naegle on Whosebug
根据 TinyMCE 的版本,解决方案是:
$(document).on('focusin', function(e) {
var target = $(e.target);
if (target.closest(".mce-window").length || target.closest(".tox-dialog").length) {
e.stopImmediatePropagation();
target = null;
}
});
当然还有来自
TinyMCE5 和 MagnificPopup 兼容性:
$.magnificPopup.instance._onFocusIn = function( e ) {
try {
if( $( e.target ).attr( 'class' ).indexOf( 'tox-' ) >= 0 ) {
return true;
}
} catch( e ) {}
$.magnificPopup.proto._onFocusIn.call( this, e );
}
对于任何将 tinymce 放入 Material UI mui 对话框的人,请执行:
<Dialog disableEnforceFocus={true} ...>