2015-09-18 108 views

回答

0

無法找到一個很好的方法來做到這一點(事件,回調,CK中的任何類型的API),但找到了一種方式滿足我們的需求(使用下劃線包裝CK功能)。

它有點哈克,但工程....

CKEDITOR.on('instanceReady', function(event) { 

      //Expose a class on the styles menu so we can scope the styles and target items that are in the menu 
      var Styles = event.editor.ui.instances.Styles; 
      Styles.onOpen = _.wrap(Styles.onOpen, function(onOpen) { 

      //Trigger the original onOpen method 
      _.bind(onOpen, Styles)(); 

      //Now find the iFrame and inject a class to the body 
      var $iframe = $(".cke iframe"); 

      if($iframe) { 
       var addClass=function() { 
       $iframe.contents().find('body').addClass('slide styles-menu'); 
       } 

       if ($iframe.contents().find('body').children().length==0) { 
       $iframe.one('load', addClass); 
       } else { 
       addClass(); 
       } 

      } 
      }); 
0

不能從外面的iFrame一個javascript做到這一點。您將不得不將自定義腳本集成到CK編輯器iFrame中。

這是iFrames的規則,您不能在iFrame文檔中綁定事件。以同樣的方式,它不可能在iFrame中綁定父文檔中的事件

+0

我並不想綁定到自身的iFrame中的事件,我一直在尋找,看看CK觸發事件時,它會打開iFrame的。我只需要知道什麼時候CK創建了這個iFrame,然後我需要運行這樣的$(「.cke_panel_frame」)。contents()。find(「body」)。addClass(「myClass」) –