获取WP Tinymce的内容

时间:2011-04-22 19:35:11

标签: javascript wordpress tinymce wysiwyg

我正在尝试编写一个Wordpress插件。我将在WP的Tinymce编辑器中获得计数。 基本上,它是一个单词计数器,可以计算您的帖子的长度,并在元框中为您提供此消息

  

你的帖子有450字

我的问题是通过javascript从Tinymce获取文字。这不起作用:

document.getElementById('content')

Tinymce的内容ID是内容。但是这段代码返回NULL。我找不到Tinymce的有效ID名称。

很快,其他所有代码都准备就绪,只是我无法从Wordpress的WYSIWYG编辑器中获取单词。

感谢。

6 个答案:

答案 0 :(得分:28)

尝试:

tinymce.activeEditor.getContent();

tinymce.editors.content.getContent();

其中“content”是您的textarea的ID。

同样,如果您想在TinyMCE文本区域中获得所选(突出显示的)文本,您可以这样做:

tinymce.activeEditor.selection.getContent();

完整的API位于:http://tinymce.moxiecode.com/wiki.php/API3:class.tinymce.Editor

TinyMCE还提供了许多可以绑定的事件,尤其是keyupkeydownkeypressed事件。

请务必在TinyMCE加载到页面后调用此内容。

答案 1 :(得分:4)

我记得微小的MCE从ajax动态加载内容,所以也许你的document.getElementById('content')试图过早地获取该元素。

我认为你有2种方法可以解决这个问题:

1)等待ajax事件completition,使用事件监听器,然后获取元素及其文本。

2)使用tinyMce函数获取文本区域的内容。在这里您可以找到一些有用的提示: http://tinymce.moxiecode.com/wiki.php/How-to_load/save_with_Ajax_in_TinyMCE

答案 2 :(得分:4)

接受的答案对我有用,但对于一个页面上的多个编辑器,我必须通过编辑器ID访问它,所以下面

tinymce.editors['content_id'].getContent();

为我工作。

答案 3 :(得分:2)

这是一个例子。无论密钥在Visual或HTML模式下发生,编辑器下方的文本都会更新。

WP tinyMCE onKeyUp

php文件中的

可视模式事件:

function my_tiny_mce_before_init( $init ) {
    $init['setup'] = "function( ed ) { ed.onKeyUp.add( function( ed, e ) { repeater( e ); }); }";
    return $init;
}
add_filter( 'tiny_mce_before_init', 'my_tiny_mce_before_init' );


javascript文件中的

HTML模式事件:

jQuery( document ).ready( function( $ ) {

    $('<div id=look-at-it></div>').insertAfter('#postbox-container-1');

    $('#content').on('keyup', function( e ) {   
        repeater( e );
    });
});


var repeater = function ( e ) {
    var targetId = e.target.id;
    var text = '';

    switch ( targetId ) {

         case 'content':
             text = jQuery('#content').val(); 
             break;

         case 'tinymce':
             if ( tinymce.activeEditor )
                 text = tinymce.activeEditor.getContent();
             break;
    }

    jQuery('#look-at-it').html( text );
}



经过测试:

  • WordPress 3.4.2

答案 4 :(得分:1)

这对我有用:

if (jQuery("#wp-text-wrap").hasClass("tmce-active")){
    text1 = tinyMCE.activeEditor.getContent( { format : 'html' } );
}else{
    text1 = jQuery('[name="text"]').val();

其中 text 是tinymce编辑器的ID

答案 5 :(得分:0)

在我测试的每种情况下,这似乎对我有用。无论我们是从文本模式还是以可视模式开始,无论是在何时更改模式和添加更多内容,都是如此。

<application
    android:name=".AppApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:theme="@style/AppTheme">