【问题标题】:ResponsiveVoice - avoid hardocoding API key into index.htmlResponsiveVoice - 避免将 API 密钥硬编码到 index.html
【发布时间】:2020-12-13 11:09:48
【问题描述】:

根据我的页面必须包含的文档

<script src="https://code.responsivevoice.org/responsivevoice.js?key=YOUR_UNIQUE_KEY"></script>

我想避免将我的 API 密钥硬编码到 index.html 中,并将其保存在单独的文件中。我尝试使用 js 添加响应式语音脚本,例如:

const rvScript = document.createElement('script');
const api_key = "XXXXXXXX"
const src = 'https://code.responsivevoice.org/responsivevoice.js?key=' + api_key;
rvScript.setAttribute('src',src);
rvScript.onload = () => {
    console.log(responsiveVoice.getVoices());
    responsiveVoice.speak('Hello world')
}
document.body.appendChild(rvScript);

我在控制台中获得了声音列表,但“Hello world”没有播放。

任何想法如何解决这个问题?

【问题讨论】:

    标签: javascript responsivevoice


    【解决方案1】:

    诀窍是创建动态加载库的标签,并仅在需要时将其注入 DOM。 这里的想法是我们创建一个函数,我们可以在需要第三方库的页面上调用该函数,并动态创建标签并将其注入应用程序中。

    const loadDynamicScript = (callback) => {
      const existingScript = document.getElementById('scriptId');
    
      if (!existingScript) {
        const script = document.createElement('script');
        script.src = 'url'; // URL for the third-party library being loaded.
        script.id = 'libraryName'; // e.g. responsivevoice or googleMaps
        document.body.appendChild(script);
    
        script.onload = () => {
          if (callback) callback();
        };
      }
    
      if (existingScript && callback) callback();
    };

    【讨论】:

    • 事实上还有一个问题。您必须在回调中添加 resposiveVoice.init()。
    猜你喜欢
    • 2020-04-30
    • 2017-11-25
    • 2016-05-11
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 2022-10-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多