6

jQueryを使用して、テキストエリアがCKEditorのインスタンスに変換されたダイアログウィンドウを開きます。CKEditorチームが提供するjQueryアダプターを使用していますが、ダイアログウィンドウが開いたときにエディターを操作できません(作成されましたが、コンテンツスペースに「null」と書き込まれ、何もクリックしたり、コンテンツを変更したりできません) )。

このバグレポートは、問題が修正された場合にパッチを使用することで、問題が修正されたと言っているようですが、私には機能していないようです...

これが私のコードです(多分私はプログラムで何か間違ったことをしました):

HTML:

<div id="ad_div" title="Analyse documentaire">
<textarea id="ad_content" name="ad_content"></textarea>
</div>

私のインクルード(すべてが正しくインクルードされていますが、インクルード注文の問題である可能性がありますか?):

<script type="text/javascript" src="includes/ckeditor/ckeditor.js"></script>
<link rel="stylesheet" type="text/css" href="includes/jquery/css/custom-theme/jquery-ui-1.7.2.custom.css" />
<script type="text/javascript" src="includes/jquery/js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" src="includes/jquery/js/jquery-ui-1.7.2.custom.min.js"></script>
<script type="text/javascript" src="includes/jquery/plugins/dialog-patch.js"></script>
<script type="text/javascript" src="includes/ckeditor/adapters/jquery.js"></script>

Javascript:

$('#ad_content').ckeditor();

/* snip */

$('#ad_div').dialog(
{
    modal: true,
    resizable: false,
    draggable: false,
    position: ['center','center'],
    width: 600,
    height: 500,
    hide: 'slide',
    show: 'slide',
    closeOnEscape: true,
    autoOpen: false
});

$('.analyse_cell').click(function(){
    $('#ad_div').dialog('open');
});

編集:さらにテストした後、ツールバーボタンを押すとこのエラーが発生することに気付きました:

エラー:this.document.getWindow()。$は未定義ですソースファイル:includes / ckeditor / ckeditor.js行:82

4

11 に答える 11

3

「show:」オプションを指定したコールバック関数を使用して、「show」アニメーションが完了するまでCKEditorのインスタンス化を遅らせました。わずか50ミリ秒でうまくいくことがわかりました。

modal: true,
show: {
    effect: "drop",
    complete: function() {
        setTimeout(function(){
            $( "#selector" ).ckeditor();
        },50);
    }
},
hide: "drop",

お役に立てれば。

于 2013-03-06T00:49:00.563 に答える
2
$('.analyse_cell').click(function(){
    $('#ad_div').dialog({
        modal: true,
        resizable: false,
        draggable: false,
        position: ['center','center'],
        width: 600,
        height: 500,
        hide: 'slide',
        show: 'slide',
        closeOnEscape: true,
        autoOpen: false,
        open: function(event,ui) {
            $('#ad_content').ckeditor();
        },
        close: function(event,ui) {
            CKEDITOR.remove($("#ad_content").ckeditorGet());
        }
    });
});
于 2010-04-14T18:12:47.403 に答える
2

最新バージョンのCKEditorを使用してください。私のためにそれを解決しました。バージョン3.4.2

于 2010-11-11T19:20:06.253 に答える
1

このスニペットをドキュメントに追加するだけで、問題は解決します。

$(document).on('focusin', function(e) {
     e.stopImmediatePropagation();
});
于 2014-10-01T07:01:53.753 に答える
0

アダプターの下に置いてみてください。修正はアダプターをオーバーライドします。

于 2010-03-29T17:21:23.643 に答える
0

なんらかの理由で動作させることができませんでしたが、同じ機能を手作業で実装することで同じ効果を得ることができました。

于 2010-04-05T14:26:26.473 に答える
0

同じ問題が発生しましたが、何らかの理由で、ダイアログを開く前にテキスト領域にテキストを入力するとうまくいくことがわかりました。本当の解決策ではありませんが、私にとってはうまくいきます。

$('#ad_content').ckeditor();

/* snip */

$('#ad_div').dialog(
{
    modal: true,
    /* Your options here. */
});

$('.analyse_cell').click(function(){
    // Add some content into textarea.
    $('#ad_content').val("Enter content here.");
    $('#ad_div').dialog('open');
});
于 2010-05-16T19:49:23.867 に答える
0

jQueryを使用して、テキストエリアがのインスタンスに変換されたダイアログウィンドウを開きますCKEditor。チームが提供するjQueryアダプターを使用していCKEditorますが、ダイアログウィンドウが開いたときにエディターを操作できません(エディターは作成されましたがnull、コンテンツスペースに書き込まれ、何もクリックしたり、コンテンツを変更したりできません)。

エラー:this.document.getWindow()。$は未定義ですソースファイル:includes / ckeditor / ckeditor.js
行:129

バージョン3.6.2を使用しています

于 2012-01-05T08:10:58.053 に答える
0

このようにjQueryUIダイアログコンストラクターにzIndex=-1を追加するだけでこれを解決しました

$('#modalWindow').dialog({ autoOpen: false, modal: true, zIndex : -1});
于 2012-01-24T03:42:19.770 に答える
0

ポップアップダイアログ(表示オプション)でjQuery UI効果を無効にすることで、まったく同じ問題を解決しました。

これを理解するために私を永遠のように連れて行った。これで、エディターは期待どおりに動作しています。

于 2013-01-29T11:18:54.010 に答える
0

神秘主義、しかしそれは私にとって助けになりました。ダイアログを作成する前に、空のデータを強制的に設定します

CKEDITOR.instances['email_text_of_message'].setData('')

ckeditor ("ckeditor", "~> 3.4")ダイアログで正常に動作します。

$("#create_email").click(function(event){

CKEDITOR.instances['email_text_of_message'].setData('')

$("#email_body").dialog({    modal: true,
                             minHeight: 720,
                             minWidth: 900,
                             buttons: [
                            {
                             id: "button_create_email",
                             text: $('#inv_notice16').text(),
                             click: function() {
                                    $("#email_body").dialog('close')
                           }
                            }]}); 
    return false;       
})
于 2013-07-12T10:42:55.720 に答える