当打开媒体弹出窗口时,是否可以触发一些JavaScript?

时间:2013-11-21 作者:jayarjo

在我的一个自定义贴子编辑页面上,我有一个按钮,点击后会触发媒体弹出窗口,带有:wp.media.editor.open(); 虽然它会提到媒体经理,但我不确定这样做是否正确。是吗?

但真正的问题是关于其他事情。如何将事件侦听器连接到媒体弹出窗口应触发的各种事件?喜欢openclose 或者切换视图是否有任何事件?

2 个回复
最合适的回答,由SO网友:Rob Vermeer 整理而成

可以使用多个事件处理程序。

frame.on(\'open\',function() {
    // Do something
});

frame.on(\'close\',function() {
    // Do something
});

frame.on(\'select\',function() {
    // Do something
});
在哪里frame 是对wp.media()

frame = wp.media();

frame.on(\'select\',function() {
    // Do something
});
完整示例

脚本en作为依赖项与jQuery和media editor一起排队。

function media_script_enqueue() {
   wp_enqueue_script( \'media-script\', get_template_directory_uri() . \'/js/media-script.js\', array( \'jquery\', \'media-editor\' ), \'\', true );
}
add_action( \'wp_enqueue_scripts\', \'media_script_enqueue\' ); // Front-end
add_action( \'admin_enqueue_scripts\', \'media_script_enqueue\' ); // Back-end
脚本包含:

;( function( $ ) {
    var frame = wp.media({
         multiple: true
    });

    $(".media").on("click", function(e) {
        frame.open();

        e.preventDefault();
    });

    frame.on(\'open\', function() {
        console.log("Open");
    });

    frame.on(\'close\', function() {
        console.log("Close");
    });

    frame.on(\'select\', function() {
        console.log("Select");

        var selection = frame.state().get(\'selection\');

        selection.each(function(attachment) {
            console.log(attachment.id);
        });
    });
} )( jQuery );
由类名为的按钮触发的窗口media

<button class="media">Media</button>
媒体javascript依赖项通过函数排队。

<?php wp_enqueue_media(array(\'post\' => get_the_ID())); ?>

SO网友:NoBugs

我最后检查的最佳文档是源代码-请参阅媒体视图。js,媒体模型。js此处:http://phpxref.ftwr.co.uk/wordpress/nav.html?wp-includes/js/

使用控制台进行试验可能会很有帮助-它主要是主干对象,您可以使用类似于我不久前编写的脚本的内容观看触发的事件-http://userscripts.org/scripts/show/161075

结束

相关推荐

添加wp_enQueue_media();导致问题

我想在主题选项页面中添加媒体上载程序。如果我在选项页面中添加以下代码,媒体上传器在那里工作正常,但它会在标准帖子的特色图片中产生问题。它不允许我从那里选择任何图像。是不是因为我用错误的方式添加了它?if ( ! did_action( \'wp_enqueue_media\' ) ){ wp_enqueue_media(); } 下面是我正在使用的上传功能:$(\'#upload_img\').click(function(){ wp.media.edit