1

URL をjQuery ダイアログからCKEditor ダイアログに戻そうとしています。

CKEditor と jQuery の両方のダイアログが機能します。

問題は、CKEditorFuncNum をサーバーに渡す方法がわからないことです。 ソース コードに飛び込んで「CKEditorFuncNum」を検索し、この変数にアクセスする方法を見つけました。

今、私はエラーが発生します:

Uncaught TypeError: Cannot call method 'getDialog' of undefined


ワークフローは次のとおりです。

  • CKEditor ダイアログを呼び出す [OK]
  • ajaxリクエストを行うjQuery関数を呼び出す[OK]
  • ajaxリクエストの内容でjQueryダイアログを呼び出す[OK]
  • jQueryダイアログを閉じて、URLをCKEditorダイアログ(URLフィールド)に戻します<-ここに問題があります


参照ボタンを変更して jQuery 関数を呼び出すようにしました (jQuery Popup)

...
{
   type : 'button',
   id : 'browseInternal',
   label : 'jQuery Popup',
   onClick :function() {
     var funcNum = this.getDialog().getParentEditor()._.filebrowserFn;
     showJQueryPopUp(funcNum);
   }
}
...


jQuery 関数は取得要求を行い、CKEditorFuncNum 値を渡します。CKEditorFuncNum 値にアクセスするにはどうすればよいですか? (下記参照)

function showJQueryPopUp(funcNum) {
    ajax_url = '../../../site_links?CKEditorFuncNum=' + funcNum;
    $.get(ajax_url, function(data) {
        $('#my_dialog_content').html(data);
        $('#my_dialog').dialog('open');
    });
};


ajax リクエストは、URL のリストといくつかの JavaScript コードを返します。

<a href="#" onclick="modify_link('http://www.google.com'); return false;">
  Google
</a>
<a href="#" onclick="modify_link('http://www.yahoo.com'); return false;">
  Yahoo
</a>
<a href="#" onclick="modify_link('http://www.microsoft.com'); return false;">
  Microsoft
</a>

<script type='text/javascript'>
  function modify_link(url) {
    window.parent.CKEDITOR.tools.callFunction(<%= @funcNum %>, url, '' );
  }
</script>



window.parent.CKEDITOR.tools.callFunction(...); を呼び出しています。次のエラーが発生します。

Uncaught TypeError: Cannot call method 'getDialog' of undefined


この競合を解決するにはどうすればよいですか?

スコープが間違っていませんか?

CKEditor ダイアログを取得するにはどうすればよいですか?

CKEditor ダイアログの URL フィールドに、jQuery ダイアログから選択した URL を入力するにはどうすればよいですか?


アドバイスをいただければ幸いです。ありがとうございました。

4

1 に答える 1