我目前正在尝试基于触发的“点击”事件调用回调。这种方法很容易注销,只有单击按钮后才能使用。
当我在控制台中执行触发命令时,keyup
事件处理程序将在触发后按预期工作。
尝试使用以下代码通过代码自动执行此过程:
let editorSwitchTmce = jQuery( ".wp-editor-tabs .switch-tmce" ),
editorCallback = function() {
tinyMCE.activeEditor.on( "keyup", function () {
console.log( tinyMCE.activeEditor.getContent() );
});
};
editorSwitchTmce.bind("click", function () {
editorCallback();
});
editorSwitchTmce.trigger( "click" );
问题在于,activeEditor
在此单击之前为空。那么为什么这不起作用呢?我是说我正在触发点击,并且期望activeEditor
的设置就像在浏览器的控制台中手动设置时一样?
答案 0 :(得分:1)
有两种解决方法-这些取决于您代码中的其他约束。最好的方法是在editorCallback()
上调用mouseup
:
editorSwitchTmce.bind( "mouseup", function () {
editorCallback();
});
这假设您的应用中其他地方的其他代码在该点击阶段的mouseup事件之前已初始化tinyMCE.activeEditor
。
如果失败,您可以选择在短暂的超时后调用editorCallback()
-想法是tinyMCE.activeEditor
在超时持续时间过后初始化:
editorSwitchTmce.bind( "click", function () {
setTimeout(function() {
editorCallback();
}, 100);
});
超时方法实际上是解决此问题的最后一道“逃生舱口”(即,如果您无法纠正应用程序的整体设计等)。它可能会引起微妙的系统或短暂的视觉副作用,因此请谨慎使用。
希望有帮助!