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 を入力するにはどうすればよいですか?
アドバイスをいただければ幸いです。ありがとうございました。