2016-11-23 13 views
5

एचटीएमएल 5 भाषण पर एक मैक 10.0.1 सफारी पर काम नहीं कर रहा,एचटीएमएल भाषण

मैं त्रुटि मिलती,

TypeError: Argument 1 ('utterance') to SpeechSynthesis.speak must be an instance of SpeechSynthesisUtterance

यह Chrome और Firefox पर काम करता, और मुझे पूरा यकीन है कि यह सफारी पर काम करता था ...

var u = new SpeechSynthesisUtterance(); 
u.text = "hello world"; 
u.lang = "en"; 
window.speechSynthesis.speak(u); 
+2

हम्म, विषम। मैंने बस उसी संस्करण सफारी (10.0.1) पर इसका परीक्षण किया और यह ठीक काम किया। –

+0

यह मेरे लिए ओएस एक्स 10.11.6 पर चल रहे सफारी 10.0.1 (11602.2.14.0.7) पर भी काम करता है। सफारी के कौन से संस्करण आप इस त्रुटि को देख रहे हैं? यदि आप ओएस एक्स 10.0.1 चला रहे हैं तो मैं सफारी का पुराना संस्करण मान रहा हूं? – Whymarrh

+0

संस्करण सफारी 10.0.1 – James

उत्तर

2

ठीक है, आखिरकार इसे समझ लिया गया।

मैं html5 भाषण के बिना ब्राउज़र का समर्थन करने के लिए कुछ संगतता कोड था

,

if (SpeechSynthesisUtterance == undefined) { 
    function SpeechSynthesisUtterance(text) { 
     this.text = text; 
    } 
} 

यह Chrome और Firefox पर काम करता है, लेकिन सफारी पर ऐसा लगता है कि किसी भी स्क्रिप्ट में किसी भी समारोह जब स्क्रिप्ट पार्स किया गया है मूल्यांकन किया जाता है तो समारोह को घोषित किया जाता है भले ही SpeechSynthesisUtterance पहले से मौजूद है।

मान लीजिए मुझे इसे अलग-अलग करने की आवश्यकता होगी ...

+1

है शायद आप चाहते हैं: 'अगर (! Window.SpeechSynthesisUtterance) {window.SpeechSynthesisUtterance = function (text) {this.text = text; }} ', यदि बयान अमान्य हैं तो नामों का नाम: http://stackoverflow.com/questions/10069204/function-declarations-inside-if-else-statements –

संबंधित मुद्दे