2017-01-13 24 views
2

ResponsiveVoice.JS website下的怪癖部分它指出:ResponsiveVoice.js - 遊覽的iOS TTS要求用戶直接交互

的iOS TTS不能沒有直接的用戶交互來觸發,ResponsiveVoice JS解決了這個

但是,對於我的生活,我無法繞過這個直接的用戶交互要求。 你如何解決這個問題?

這裏是代碼片段我想無需用戶交互我現在已經找到了在<head>元素來執行:

<script src="http://code.responsivevoice.org/responsivevoice.js"></script> 
<script type="text/javascript"> 
    function speak_static_data(){ 
     responsiveVoice.speak('Test'); 
    } 
    setTimeout(function(){ speak_static_data(); }, 3000); 
</script> 

我想打電話給responsiveVoice.speak('Test');在iOS的頁面加載沒有直接的用戶交互。我將如何做到這一點?

這個相同的代碼片段在臺式機/ Chrome瀏覽器上的Android/Safari上說得很好,但在iOS中卻不行。

回答

0

所以我正在尋找這個,並隱藏在他們的常見問題,他們有iOS指南。他們沒有完全規避它,但是在第一次實施後,它會在任何時候繞過它。

在iOS上,某些事件(如語音合成)需要從用戶操作(即單擊)中觸發。例如,這會導致ResponsiveVoice說出呼叫不能在頁面加載中工作。

使用語音合成,用戶觸發的動作只需要進行一次。第一個之後的進一步直接呼叫將按預期工作。

因此,建議的最佳做法是在用戶點擊的體驗中添加一個「開始」按鈕,並將其用作對responsiveVoice.speak()的初始化調用。如果需要的話,該呼叫可以具有作爲文本的空白空間,因此對用戶沒有影響。

你不需要真正說什麼,所以有一個用戶只需點擊一下按鈕即可調用responsiveVoice就足夠了。

<button onclick="responsiveVoice.speak('');">Enable Voice</button> 

Responsve語音FAQ:https://responsivevoice.org/faq/