因此,作为一个小背景故事,我在一个通过 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();
}
});
});
}