使用activeX时有条件加载activeX事件
我们在使用ActiveX时一般会在页面中直接增加事件。如下例:
1)调用语音TTS的ActiveX
<script type="text/javascript" language="javascript">
var VoiceObj = null; //TTS object
VoiceObj = new ActiveXObject('Sapi.SpVoice');
</script>
var VoiceObj = null; //TTS object
VoiceObj = new ActiveXObject('Sapi.SpVoice');
</script>
2)在页面底部增加语音ActiveX的播放完成事件。
<script type="text/javascript" language="javascript">
function VoiceObj::EndStream()
{
OldTtsCount--;
}
</script>
function VoiceObj::EndStream()
{
OldTtsCount--;
}
</script>
可是问题来了。用户使用带有ActiveX的页面时,会提示用户是否加载ActiveX。如果用户不加载ActiveX时,否则会报错。这时我们应当判断用户是否加载了ActiveX,并且,当用户加载了ActiveX后再增加ActiveX相关的事件。解决方法如下。
1) 在加载时,通过捕获异常的方式来判断ActiveX的加载。
<script type="text/javascript" language="javascript">
var VoiceObj = null; //TTS object
if( VoiceObj==null ){
try {
VoiceObj = new ActiveXObject('Sapi.SpVoice');
} catch(err) {
VoiceObj=null;
}
}
</script>
var VoiceObj = null; //TTS object
if( VoiceObj==null ){
try {
VoiceObj = new ActiveXObject('Sapi.SpVoice');
} catch(err) {
VoiceObj=null;
}
}
</script>
2)判断ActiveX对象为空时,就不加载对象。
<script type="text/javascript" language="javascript">
var TTsFn = function(){
function VoiceObj::EndStream()
{
//运行其内内容
}
}
if (VoiceObj != null) {
//加载ActiveX事件
TTsFn();
}
</script>
var TTsFn = function(){
function VoiceObj::EndStream()
{
//运行其内内容
}
}
if (VoiceObj != null) {
//加载ActiveX事件
TTsFn();
}
</script>