如果我有一个通常会被垃圾收集但已被记录到控制台的对象,它是否仍有资格进行垃圾回收?
(function(){
var o = { foo: {} };
console.log(o);
}())
// Can o be collected?
Run Code Online (Sandbox Code Playgroud)
如果是,是否有任何情况下写入控制台(使用其任何方法)会影响垃圾收集的资格?
编辑:我不相信它会影响基于在Chrome开发工具中观看堆的收集资格.但是,任何类型的写入控制台都会这样做吗?
当speak在Web Speech API中使用该功能时,在Chrome中,语音在几秒钟之后突然停止,在给予它的文本中间,在一个看似随机的地方(没有到达终点).这只发生在Chrome(适用于Firefox),在两台不同的计算机/系统上进行测试.
看看这个jsfiddle看/听:https://jsfiddle.net/fv9ochpq/
您可以看到SpeechSynthesis对象.speaking标志在停止讲话后保持打开(true).
我没有看到传递给话语的文本有任何记录限制.这是Google Chrome错误吗?顺便说一下,自2014年以来我就已经知道了这一点 - 当时我试图将语音功能添加到我制作的浏览器扩展中(那时它是可用于Chrome扩展的TTS API - 同样的事情也发生在那里),但最终还没有不要因为这个明显的错误而这样做.现在我想要克服这个问题 - 如果这是一个错误,我会感谢任何人指导我到最好的地方报告它.
编辑:它似乎在大约15秒后停止.每运行14秒添加一个间隔.resume()似乎"修复"了这个.请参阅:https ://jsfiddle.net/fv9ochpq/1/
但这是一个黑客攻击.
javascript google-chrome text-to-speech speech-synthesis webspeech-api
我在我的扩展程序中使用Chrome的tts服务.根据chrome.tts文档:
文本的最大长度为32,768个字符.
但是,当我传递超过250个字符的字符串时,引擎将无法读取所有话语(它将停止在单词的中间读取它).我现在想知道这是一个错误还是这个设计.Web语音API具有类似于规范中描述的字符限制,并且其行为方式相同.
我想知道我做错了什么,或者它只取决于浏览器中的TTS引擎而我无法用它做任何事情?
google-chrome text-to-speech google-chrome-extension webspeech-api
所以我使用修改后的脚本尝试从Web Speech API播放一些文本.
代码最初在这里:
这是我修改后的变体:
function googleSpeech(text, rate) {
if (!reading) {
speechSynthesis.cancel();
if (timer) {
clearInterval(timer);
}
let msg = new SpeechSynthesisUtterance();
let voices = window.speechSynthesis.getVoices();
msg.voice = voices[63];
msg.voiceURI = 'native';
msg.volume = 1; // 0 to 1
msg.rate = rate; // 0.1 to 10
msg.pitch = 1; //0 to 2
msg.text = text;
msg.lang = 'zh-CN';
msg.onerror = function (e) {
speechSynthesis.cancel();
reading = false;
clearInterval(timer);
};
msg.onpause = function (e) {
};
msg.onboundary = function …Run Code Online (Sandbox Code Playgroud) javascript ×3