gpt4 book ai didi

javascript - 我怎么知道生成 CKEditor 所见即所得编辑器的 javascripts 何时完成执行?

转载 作者:行者123 更新时间:2023-11-30 18:14:59 25 4
gpt4 key购买 nike

我在 Drupal 7 上使用 CKEditor 3.6.5.7647 将我所有过滤的 HTML 文本字段转换为所见即所得的编辑器。 Drupal 会自动执行此操作,但它会扰乱表单验证。事实上,drupal 仍然正确地将 error 类应用到文本区域,但文本区域现在被隐藏并被 WYSIWYG 编辑器取代,从而阻止用户看到该类的效果(红色边框)。我认为通过添加一个脚本可以很容易地解决这个问题,如果关联的文本区域设置了 error 类,它会环顾所有所见即所得并将它们的边框设置为红色,但我发现我的脚本正在在构建 WYSIWYG 之前执行,破坏它。我设法完成这项工作的唯一方法是这样的:

jQuery.noConflict();
(function ($) {
"use strict";

function fixWYSIWYGHighlights() {
$('span.cke_skin_kama').each(function() {
if ($(this).prev().hasClass('error')) {
$(this).css({ border: '1px solid #f00'});
}
});
}

$('document').ready(function () {
var timeout = window.setTimeout(fixWYSIWYGHighlights, 1000); // TODO Find a better way to launch the script only once the WYSIWYGs are constructed
});
}(jQuery));

如您所见,我正在使用超时来确保我的脚本仅在构建所见即所得的脚本终止后才执行,但我想知道是否有更好的方法来执行此操作。

已解决

感谢oleq的回答,我用下面的代码解决了我的问题:

jQuery.noConflict();
(function ($) {
"use strict";

$(document).ready(function () {
CKEDITOR.on('instanceReady', function (event) {
var textarea = $(event.editor.element.$)[0],
element = $(event.editor.container.$)[0];
if($(textarea).hasClass('error')) {
$(element).css({ border: '1px solid #f00' });
}
});
});
}(jQuery));

最佳答案

我猜你应该观察 instanceReady事件并在其回调中执行您的代码:

CKEDITOR.on( 'instanceReady', function( event ) {
console.log( 'Me ready!', event, event.editor );
});

关于javascript - 我怎么知道生成 CKEditor 所见即所得编辑器的 javascripts 何时完成执行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13520488/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com