自从微软对ie6的activex更新后,每次用ie打开带有activex控件的页面时,必须要进行控件激活操作(点击相关控件),否则该控件将无法正常工作。如果在页面上使用activex控件不多的话,每次多点一下也就算了,不过一旦要频繁操作或者控件很多,每次要做这个重复劳动时,客户肯定会疯掉了。msdn提供了相应的解决办法,可以不需要手工激活,回到以前一样的操作。下面三种办法,关键是把传统页面和控件输出进行分离,技术核心是dhtml和脚本。
方法一(入门篇,解决问题即可):
<!-- activex.html -->
<html>
<body leftmargin=0 topmargin=0 scroll=no>
<script src="docwrite.js"></script>
</body>
</html>
// docwrite.js
document.write('<object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6">');
document.write('<param name="url" value="example.wmv">');
document.write('<param name="autostart" value="-1"></object>');
方法二(专业篇):
<!-- activex.html -->
<html>
<body>
<div id="divid">
<script src="createelementexplicit.js"></script>
</body>
</html>
// createelementexplicit.js
var myobject = document.createelement('object');
divid.appendchild(myobject);
myobject.width = "200";
myobject.height = "100";
myobject.classid= "clsid:6bf52a52-394a-11d3-b153-00c04f79faa6";
myobject.url = "example.wmv";
myobject.uimode = "none" ;
方法三(终极篇,适合批量更新):
<!-- activex.html -->
<html>
<head>
<script src="external_script.js" language="jscript"></script>
</head>
<body>
<div id="example_div_id">
this text will be replaced by the control
</div>
<script language="jscript">
createcontrol( "example_div_id",
"clsid:6bf52a52-394a-11d3-b153-00c04f79faa6",
"example_object_id", "600", "400", "example.wmv",
"-1")
</script>
</body>
</html>
// external_script.js
function createcontrol(divid, clsid, objectid,
width, height, url, autostart)
{
var d = document.getelementbyid(divid);
d.innerhtml =
'<object classid=' + clsid + ' id=' + objectid +
' width=' + width + ' height=' + height +'>
<param name="url" value=' + url + '>
<param name="autostart" value=' + autostart + '/>';
}
方法一(入门篇,解决问题即可):
<!-- activex.html -->
<html>
<body leftmargin=0 topmargin=0 scroll=no>
<script src="docwrite.js"></script>
</body>
</html>
// docwrite.js
document.write('<object classid="clsid:6bf52a52-394a-11d3-b153-00c04f79faa6">');
document.write('<param name="url" value="example.wmv">');
document.write('<param name="autostart" value="-1"></object>');
方法二(专业篇):
<!-- activex.html -->
<html>
<body>
<div id="divid">
<script src="createelementexplicit.js"></script>
</body>
</html>
// createelementexplicit.js
var myobject = document.createelement('object');
divid.appendchild(myobject);
myobject.width = "200";
myobject.height = "100";
myobject.classid= "clsid:6bf52a52-394a-11d3-b153-00c04f79faa6";
myobject.url = "example.wmv";
myobject.uimode = "none" ;
方法三(终极篇,适合批量更新):
<!-- activex.html -->
<html>
<head>
<script src="external_script.js" language="jscript"></script>
</head>
<body>
<div id="example_div_id">
this text will be replaced by the control
</div>
<script language="jscript">
createcontrol( "example_div_id",
"clsid:6bf52a52-394a-11d3-b153-00c04f79faa6",
"example_object_id", "600", "400", "example.wmv",
"-1")
</script>
</body>
</html>
// external_script.js
function createcontrol(divid, clsid, objectid,
width, height, url, autostart)
{
var d = document.getelementbyid(divid);
d.innerhtml =
'<object classid=' + clsid + ' id=' + objectid +
' width=' + width + ' height=' + height +'>
<param name="url" value=' + url + '>
<param name="autostart" value=' + autostart + '/>';
}

