2017-04-26 45 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) 

} 
相關問題