如何向CKEditor插件添加自定义功能?

时间:2014-02-28 15:33:41

标签: javascript iframe plugins ckeditor dom-manipulation

我创建了一些CKEditor插件,它有一些标签,每个标签上都有一个不同的iframe。在那些iframe中,表格中包含某些内容的标题。我希望能够单击表格行并让它插入所单击项目的标题。

问题是我无法弄清楚如何将这种自定义javascript添加到插件中。我有plugin.js,它添加​​了init函数,用于添加按钮,当单击该按钮时,执行添加对话框窗口的命令。然后在我的myDialog.js中,我将对话窗口定义为:

CKEDITOR.dialog.add( 'addLinkDialog', function( editor ) {
  return {
    title: 'Links',
    minWidth: 800,
    minHeight: 600,
    contents: [
      {
        id : 'articlesTab',
        label : Drupal.t('Articles'),
        title : Drupal.t('Articles'),
        elements : [
      /* {
            id : 'articlenid',
            type : 'text',
            label : Drupal.t('Article Node ID')
          }, */
          {
            type : 'html',
            html : '<iframe src="/links/articles?link=1" style="width:900px; height:600px;"></iframe>',
          }
        ]
      },
      {
        id : 'menuTab',
        label : Drupal.t('Menu Items'),
        title : Drupal.t('Menu Items'),
        elements : [
          {
            type : 'html',
            html : '<div>MENU TEST</div>',
          }
        ]
      },
      {
        id : 'videosTab',
        label : Drupal.t('Videos'),
        title : Drupal.t('Videos'),
        elements : [
          {
            type : 'html',
            html : '<div>VIDEOS TEST</div>',
          }
        ]
      }
    ],
    onOk: function() {
      var editor = this.getParentEditor();
      // var content = this.getValueOf( 'articlesTab', 'articlenid' );
      // alert(content);
    }
  };
});

我知道当我单击对话框窗口上的按钮时,我的onOk工作,但我不知道如何从iframe中获取信息,以及这样的函数应该去哪里(在我的plugin.js或myDialog中)的.js?)。

1 个答案:

答案 0 :(得分:0)

我最终必须创建另一个js文件并将其包含在iframe页面中,然后使用jquery中的.find的parent.document选择器来操作iframe之外的dom元素。

$(".videoUrlInput", parent.document).find('input.cke_dialog_ui_input_text').val(assetUrl);