2011-09-29 58 views
1

使用jQuery我试图操纵WordPress的内容编辑器,它使用TinyMCE的一个iframe内。我似乎无法得到下面的代码工作打算:访问的WordPress的TinyMCE的iFrame的

jQuery(document).ready(function($) { 
$('#content_ifr').ready(function() { 
    $('#content_ifr').contents().find('body').css('background-color', '#f33'); 
}); 

不管我是否使用“就绪()”或“.load()”,该事件的TinyMCE的编辑器之前将火( iframe的主体)完全加载完成。

但是,下面的代码将工作,如果我等待的iframe手动单击标题文本之前加载火单击事件:

jQuery(document).ready(function($) { 
$('#title').click(function() { 
    $('#content_ifr').contents().find('body').css('background-color', '#f33'); 
}); 

我已经穷尽搜索了jQuery和iFrame中的主题,而且这看起来是根据情况而定。一些代码适用于某些人,而不适用于其他人。

有谁知道的一种方式来获得第一代码片段TinyMCE的IFRAME体后,火被完全完成载入?因为它只是WordPress内容编辑器,所以iframe内容位于同一个域中。

我真正想要做的是一类通过.addClass()

jQuery(document).ready(function($) { 
$('#content_ifr').ready(function() { 
    $('#content_ifr').contents().find('body').addClass('ui-droppable'); 
}); 

所以添加到body元素在iframe中,我可以在下面的教程应用拖N”滴代码:

http://skfox.com/2008/11/26/jquery-example-inserting-text-with-drag-n-drop/

+0

也许改变TinyMCE代码本身? – HerrSerker

+0

@HerrSerker这种情况已经开始看起来像是唯一的可能性:创建一个在TinyMCE插件触发通过一个全局变量的事件或信号,但是这将是颇为曲折。嗯 – Robert

回答

1

更多挖后,出现的问题是在WordPress的TinyMCE中与交互的方式。通过以下螺纹kovshenin后阐明这一些轻: change textarea value doesn't work 为了操纵WordPress的内容,我需要隐藏的文本区域,而不是iframe中的内容本身的工作。

+0

请你分享代码snipet或你是如何解决这个问题..我在这里面临同样的问题:( – numediaweb

+0

更新 好吧,代码是: jQuery(“#content”)。text(“Your文本在这里“); tinyMCE.activeEditor.execCommand('mceSetContent',false,jQuery(”#content“).text()); – numediaweb

1

看一看你的TinyMCE的配置。您所需要的只是使用"setup"-setting并在那里设置onInit-Handler。这里有一个例子:

tinyMCE.init({ 
    ... 
    setup : function(ed) { 
     ed.onInit.add(function(ed, evt) { 
      window.console && window.console.log('Tinymce Iframe loaded!'); 
      // do whatever you like here 
     }); 
    } 
}); 
5

可以使用tiny_mce_before_init钩tinymce.init前的一类补充人体

function my_tiny_mce_before_init($init_array) { 
    $init_array['body_class'] = 'some-class some-other-class'; 
    return $init_array; 
} 
add_filter('tiny_mce_before_init', 'my_tiny_mce_before_init'); 
+0

+1 Works well .. – Ben

1

我用这个功能来访问或样式IFRAME(内TinyMCE的) Wordpess: 将此脚本添加到wordpress仪表板脚本中,并在TINYMCE iframe加载时进行检测,然后对其执行操作。

add_action('admin_head', 'my_tinymce_styler',99,99); 
function my_tinymce_styler() 
    { 
     ?> 
     <script> 
     var theFrame; 
     window.onload = function() 
     { 
      theFrame = document.getElementsByTagName("iframe")[0]; 
      if (!theFrame) {window.setTimeout(function(){theFrame = document.getElementsByTagName("iframe")[0]}, 1000); } 
      else 
      { 
        var theFrameDocument = theFrame.contentDocument || theFrame.contentWindow.document; 
        var frmbody = theFrameDocument.body; 
        frmbody.innerHTML += '<?php echo json_encode(' 
         <style> 
          .parentt{ 
          border:5px solid red !important; 
          } 
         </style>');?>'; 
      } 
     }; 
     </script> 
      <?php 
    }