作者:追风 来自:网络
大家可以看到在下载ACTIVEX控件时IE通常会弹出一个对话框问是否容许下载并执行该ACTIVEX控件,如果用户点否则控件无法下载,那我后面JS对控件方法的调用肯定会出错,如何避免这个问题呢?是否可以在调用方法之前用JS判断一下呢?请看我下面的讲解?
方法一:
你可以试着调用ActiveX control里的一个方法Method, 如调用不成功,则说明control还没有下载成功.例如:
<script language="javascript">
var bControlLoaded=false;
function window.onload()
{
try
{
if (objectID.someMethod)
bControlLoaded = true;
}
catch (ex)
{}
alert(bControlLoaded);
}
</script>
<object id="objectID"></object>
换句话说,在你调用方法这前,检查bControlLoaded是否返回真.若不是,则报警,也可以转到用户定义的网页显示control没有下载成功.
<script language="javascript">
function window.onload()
{
try
{
if (objectID.someMethod)
bControlLoaded = true;
}
catch (ex)
{
alert("you did not install the control properly!");
window.location.href="someotherpage.html";
}
}
</script>
方法二:
<html XMLNS:CC>
<head>
<STYLE>
@media all { CC\:clientCaps {behavior:url(#default#clientCaps)}}
</Style>
<title>Client Capabilities</title>
</head>
<body onload="showComponentStatus();" bgcolor="#FFFFFF">
<CC:clientCaps id=clientCaps />
</body>
<script language=javascript>
function showComponentStatus(){
displayComponent("Address Book",
"{7790769C-0471-11D2-AF11-00C04FA35D02}");
displayComponent("DirectAnimation",
"{283807b5-2c60-11d0-a31d-00aa00b92c03}");
displayComponent("DirectAnimation Java Classes",
"{4f216970-c90c-11d1-b5c7-0000f8051515}");
displayComponent("DirectShow", "{44BBA848-CC51-11CF-AAFA-00AA00B6015C}");
displayComponent("Dynamic HTML Data Binding",
"{9381d8f2-0288-11d0-9501-00aa00b911a5}");
displayComponent("Dynamic HTML Data Binding for Java",
"{4f216970-c90c-11d1-b5c7-0000f8051515}");
displayComponent("Internet Connection Wizard",
"{5a8d6ee0-3e18-11d0-821e-444553540000}");
displayComponent("Internet Explorer 5 Web Browser",
"{89820200-ecbd-11cf-8b85-00aa005b4383}");
displayComponent("Internet Explorer Classes for Java",
"{08b0e5c0-4fcb-11cf-aaa5-00401c608555}");
displayComponent("Internet Explorer Help",
"{45ea75a0-a269-11d1-b5bf-0000f8051515}");
displayComponent("Internet Explorer Help Engine",
"{de5aed00-a4bf-11d1-9948-00c04f98bbc9}");
displayComponent("Windows Media Player",
"{22d6f312-b0f6-11d0-94ab-0080c74c7e95}");
displayComponent("NetMeeting NT",
"{44bba842-cc51-11cf-aafa-00aa00b6015b}");
displayComponent("Offline Browsing Pack",
"{3af36230-a269-11d1-b5bf-0000f8051515}");
displayComponent("Outlook Express",
"{44bba840-cc51-11cf-aafa-00aa00b6015c}");
displayComponent("Task Scheduler",
"{cc2a9ba0-3bdd-11d0-821e-444553540000}");
displayComponent("Microsoft virtual machine",
"{08b0e5c0-4fcb-11cf-aaa5-00401c608500}");
displayComponent("VRML 2.0 Viewer",
"{90a7533d-88fe-11d0-9dbe-0000c0411fc3}");
displayComponent("Wallet",
"{1CDEE860-E95B-11CF-B1B0-00AA00BBAD66}");
}
function displayComponent(compDesc, compID){
if (clientCaps.isComponentInstalled(compID, "componentID")){
alert("Installed.");
}
}
</script>
</html>