fix: guard against Brave user-script fake SpeechSynthesisVoice proxy (#63)
Brave on iOS injects a user-script that wraps SpeechSynthesisVoice objects with a fake proxy. Accessing v.lang on the proxy threw 'undefined is not an object (evaluating Object.getPrototypeOf(voice))'. Fix: wrap the v.lang access in _initBrowserTtsVoices filter() inside its own try/catch — bad proxies are silently discarded.
This commit is contained in:
+4
-1
@@ -12663,7 +12663,10 @@ function _initBrowserTtsVoices(selectedVoice) {
|
||||
const populate = () => {
|
||||
let voices = [];
|
||||
try {
|
||||
voices = (window.speechSynthesis.getVoices() || []).filter(v => v != null && v.lang);
|
||||
voices = (window.speechSynthesis.getVoices() || []).filter(v => {
|
||||
try { return v != null && typeof v.lang === 'string' && v.lang.length > 0; }
|
||||
catch (_) { return false; }
|
||||
});
|
||||
} catch (_) { return false; }
|
||||
if (!voices.length) return false;
|
||||
// Italian voices first, then others
|
||||
|
||||
Reference in New Issue
Block a user