我正在尝试将 jQuery对话框中的URL传递回 CKEditor对话框 。
CKEditor和jQuery对话框都有效。
问题是我不知道如何将CKEditorFuncNum传递给服务器。 我潜入源代码并搜索'CKEditorFuncNum'并找到了访问此变量的方法。
现在我收到了错误:
Uncaught TypeError: Cannot call method 'getDialog' of undefined
这是工作流程:
我更改了浏览按钮以调用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请求返回一个网址列表和一些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对话框中选定的网址填写CKEditor对话框的URL字段?
我很感激任何建议。谢谢。
答案 0 :(得分:0)
好的,这就是我解决它的方法:
使用window.parent.CKEDITOR.tools.callFunction...);
将值传回对话框对我来说无效。所以我寻找另一种方法将一些值传递回CKEditor对话框。
我在调用jQuery对话框(ref
)之前定义了一个回调函数(showJQueryPopUp()
):
...
{
type : 'button',
id : 'browseInternal',
label : 'jQuery Popup',
onClick :function() {
var dialog = this.getDialog();
var selected_url = dialog.getContentElement('info', 'url').getValue();
var ref = CKEDITOR.tools.addFunction(
function(url)
{
dialog.getContentElement('info','url').setValue(url);
});
var funcNum = this.getDialog().getParentEditor()._.filebrowserFn;
var editor_name = this.getDialog().getParentEditor().name;
showJQueryPopUp(funcNum, editor_name, ref, selected_url);
}
}
...
我通过funcNum
,ref
和selected_url
发出了ajax请求。 (ref
只是一个数字)
function showJQueryPopUp(funcNum, editor_name, ref, selected_url) {
var ajax_url = '../../../site_links?CKEditorFuncNum=' + funcNum + '&ref=' + ref + '&selected_url=' + selected_url;
$.get(ajax_url, function(data) {
$('#my_dialog_content').html(data);
$('#my_dialog').dialog('open');
});
};
serverside脚本提取参数并将其传递给视图(@ref):
<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) {
CKEDITOR.tools.callFunction(<%= @ref %>, url);
}