2017-04-26 65 views
0

我一直使用名为AddPipe的可嵌入式VideoRecorder。 https://addpipe.com/docs#javascript-control-api。在过去的几个月我一直在使用这个函数的一次加载自动记录的开始:如何确保函数在Javascript中返回true?

function onRecorderReady(recorderId) { 

    document.VideoRecorder.record(); 

} 

此函数随机停止工作。在使用record()方法之前,为了确保嵌入返回到CameAccess()和onFlashReady()中。我试图改变我的代码,以反映这一点,但我得到一个错误:

[Error] TypeError: undefined is not an object (evaluating 'document.VideoRecorder.record') 
Global Code (Example:78) 

我以前当我得到这个错误代码:

<script> 

function onCamAccess(allowed, recorderId) { 

    return true;  

} 



function onFlashReady(recorderId) { 

    return true; 

} 

if (onCamAccess()) { 

    if (onFlashReady()) { 

     document.VideoRecorder.record(); 

    } 


} 

</script> 
+0

嗨,也许你可以推迟电话,直到VideoRecorder对象准备就绪。如果加载脚本是一个问题,只需检查它直到它准备就绪。 –

回答

0

我已经在文档中发现这一点:

onFlashReady(recorderId);
This function is deprecated

也许你可以试试下面的代码:

function onCamAccess(allowed, recorderId) { 
    document.VideoRecorder.record(); 
} 

编辑:你能试试吗?

(function() { 
    function onRecorderReady(recorderId) { 
    document.VideoRecorder.record(); 
    } 
})(); 
+0

我试过了,我刚刚找到的解决方案是设置1秒超时功能,这很奇怪,因为之前不需要这个功能。 –

+0

@ChaceMcguyer:我修改了我的答案。告诉我,如果它适合你... :) – Badacadabra

+0

不,它仍然无法正常工作。问题是onRecorderReady不一定确保'onCamAccess()'被记录器调用并返回true。在发生'onRecorderReady()'事件后约500毫秒的时间访问摄像机。所以我不得不推迟'.record()'方法来解决这个问题。你想在这里做什么? –

0

我发现的解决方案是在.record()方法上设置超时函数。

function onRecorderReady(recorderId) { 

setTimeout(function() {document.VideoRecorder.record();}, 1000) 

}