我正在尝试将jQuery 对话框中的 URL 传递回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 函数发出一个 get 请求,传递 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 对话框?
如何使用从 jQuery 对话框中选择的 url 填充 CKEditor 对话框的 URL 字段?
我会很感激任何建议。谢谢你。