1

因此,作为一个小背景故事,我在一个通过 ajax 动态提供一些 HTML 的页面上使用jRecorder插件用于 jQuery。用户可以为幻灯片中的图像录制 .wav 旁白,然后(通过 ajax)翻转到另一个图像,录制另一个旁白,冲洗并重复。结束背景故事!

我相信,这个问题本身更倾向于 jQ/JS。当我再次运行“记录”功能时,我在控制台中收到此错误:

未捕获的类型错误:对象 # 没有方法 'jStartRecording'

在我切换到第二张图像并单击“记录”时出现。第一个旁白记录很好,可以毫无问题地播放。我想我收到错误是因为我需要重新初始化或重新加载 jRecorder 插件/方法/函数,因为我试图使用一组不同的选项再次调用 jRecorder(在幻灯片中切换到另一个图像之后) . 由于我再次调用它,似乎某些内容尚未完全加载,或者插件操作的每个实例之间存在某种冲突。

底线:有没有办法重新初始化 jQuery 插件,以便在动态切换参数后再次运行它?

也许我完全找错了树——我不知道。任何来自不同视角的见解都将不胜感激。非常感谢!

编辑:根据要求,这里有一些代码。这是插件源。希望能帮助到你!

renderPanes()每次使用新图像的数据刷新包含旁白记录器的小部件时调用。显然,为了简洁和安全,有些内容已被删除。

function renderPanes(type, bucket_id) {
var isRecording = false;

$.getJSON( [endpoint] )
.done(function(json){
    [....]

    $.jRecorder({ 
            host : [endpoint],
            callback_started_recording:     function(){callback_started(); },
            callback_stopped_recording:     function(){callback_stopped(); },
            callback_activityLevel:          function(level){callback_activityLevel(level); },
            callback_activityTime:     function(time){callback_activityTime(time); },
            callback_finished_sending:     function(time){ callback_finished_sending() },
            swf_path : '/assets/js/jrecorder/jRecorder.swf',
    });

    $("#narration_play").click(function(){
        var audio = new Audio("[folder path]/"+bucket_id+".wav");
        audio.play();
    });

    $("#narration_record").click(function(){
        if (!isRecording) {
            $.jRecorder.record(30);
            $("#narration_record").html("<i class='icon-stop'></i> Stop");
            isRecording = true;
        } else {
            isRecording = false;
            $("#narration_record").html("<i class='icon-comment'></i> Record");
            $("#narration_play").removeClass('disabled');
            $.jRecorder.stop();
            $.jRecorder.sendData();
        }
    });
});
}
4

0 回答 0