Hi John,
The browsers IE6, IE7 and IE8 cannot play an audio file directly without an external plugin. In newer browsers that support HTML5 <audio/> the file can be played directly without the need to install additional software.
In order to be able to play the sounds without additional plugins installed, I would recommend changing the code a bit so that the file is downloaded in the browser. Please add the provided code below your ScriptManager control, on the page containing the RadCaptcha:
<scripttype="text/javascript">
Telerik.Web.UI.RadCaptcha.prototype._createAudioElements = function ()
{
var audioUrl = this.get_audioUrl();
var audioLink = this.get_audioLink();
$addHandlers(audioLink, { "click": this.onAudioPlay }, this);
var element = audioLink.parentNode;
this._audioElement = this._createAudioElement(audioUrl);
element.appendChild(this._audioElement);
// Opera 10, Safari 4 and Firefox 3.5 support WAV, but Chrome 3 doesn't.
// IE6,7 and 8 do not support <audio/>
var doesNotSupportAudio = (!this._supportsAudio() || (this._audioElement && this._audioElement.canPlayType && !this._audioElement.canPlayType("audio/wav")));
if (doesNotSupportAudio)
{
alert("check");
var _qtInstalled = IsQTInstalled();
if (_qtInstalled)
{
this._objectElement = this._createObjectElement(audioUrl);
element.appendChild(this._objectElement);
}
else
{
this.downloadFile = true;
}
}
else
{
audioLink.setAttribute('href', "#");
}
}
Telerik.Web.UI.RadCaptcha.prototype.onAudioPlay = function (e)
{
if (this._objectElement)
{
this._objectElement.Play();
}
else if (this._audioElement && this._audioElement.play)
{
//Chrome supports <audio/>, but the audio is played only once. That's why we need
//to load the audio file explicitly
if ($telerik.isChrome)
{
this._audioElement.load();
}
this._audioElement.play();
}
if (!this.downloadFile)
{
return $telerik.cancelRawEvent(e);
}
}
function IsQTInstalled()
{
var isInstalled = false;
var qtVersion = null;
if (window.ActiveXObject)
{
var control = null;
try
{
control = new ActiveXObject('QuickTime.QuickTime');
}
catch (e)
{
// Do nothing
}
if (control)
{
// In case QuickTimeCheckObject.QuickTimeCheck does not exist
isInstalled = true;
}
try
{
// This generates a user prompt in Internet Explorer 7
control = new ActiveXObject('QuickTimeCheckObject.QuickTimeCheck');
}
catch (e)
{
return isInstalled;
}
if (control)
{
// In case QuickTime.QuickTime does not exist
isInstalled = true;
// Get version
qtVersion = control.QuickTimeVersion.toString(16); // Convert to hex
qtVersion = qtVersion.substring(0, 1) + '.' + qtVersion.substring(1, 3);
qtVersion = parseFloat(qtVersion);
}
}
else
{
// Check navigator.plugins for "QuickTime Plug-in"
}
return isInstalled;
}
</script>
Greetings,
Slav
the Telerik team