ResponsiveVoice - 避免将 API 键硬编码到 index.html
ResponsiveVoice - avoid hardocoding API key into index.html
根据文档,我的页面必须包含
<script src="https://code.responsivevoice.org/responsivevoice.js?key=YOUR_UNIQUE_KEY"></script>
我想避免将 API 密钥硬编码到 index.html 中,并将其保存在单独的文件中。我尝试使用 js 添加 responsivevoice 脚本,例如:
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”。
有什么解决办法吗?
诀窍是创建动态加载库的标签,并仅在我们需要时将其注入 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();
};
根据文档,我的页面必须包含
<script src="https://code.responsivevoice.org/responsivevoice.js?key=YOUR_UNIQUE_KEY"></script>
我想避免将 API 密钥硬编码到 index.html 中,并将其保存在单独的文件中。我尝试使用 js 添加 responsivevoice 脚本,例如:
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”。
有什么解决办法吗?
诀窍是创建动态加载库的标签,并仅在我们需要时将其注入 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();
};