IE调用Activex控件时EVENT的三种调用方式

Test 1 uses the "for" tag to setup the callback to the activeX event. This is successful on all versions IE8, 9, 10 and 11.

<!DOCTYPE html>
<html>
	<head>
		<title>TestEvent Example HTML</title>
		<meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
		<script language='javascript' for="testAxEvent" event="testEvent(szType, szValue)">
		// Test 1 - statically load the script (This is the basis for the hack)
		// Works on IE8, IE9, IE10 and IE11
			var MSG = document.getElementById("msg");
			MSG.innerHTML = szType + " : " + szValue;
		</script>
	</head>
	<body>
		<table>
			<tr>
				<td>
					<OBJECT ID='testAxEvent' CLASSID='CLSID:BA19A985-C93E-491B-B801-2EB7F903C8CE' codebase="testAxEvent.cab"></OBJECT>
				</td>
			</tr>
			<tr><td  height='30'></td></tr>
			<tr>
				<td align=center><font size=5><div id='msg'></div></font>	
			</tr>
		</table>
	</body>
</html>

Test 2 uses attachEvent to bind the callback to the object element. The callback is correctly called on IE8, 9 and 10 but not on IE11, as was expected.

<!DOCTYPE html>
<html>
	<head>
		<title>TestEvent Example HTML</title>
		<meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
	</head>
	<body>
		<table>
			<tr>
				<td>
					<OBJECT ID='testAxEvent' CLASSID='CLSID:BA19A985-C93E-491B-B801-2EB7F903C8CE' codebase="testAxEvent.cab" width='120' height='80'></OBJECT>
				</td>
			</tr>
			<tr><td  height='30'></td></tr>
			<tr>
				<td align=center><font size=5><div id='msg'></div></font>	
			</tr>
		</table>
	</body>
	<script>
		// Test 2 - attachEvent
		// Works on IE8, IE9 and IE10
		// Does not work on IE11
		function onTestEvent(szType, szValue)
		{
			var MSG = document.getElementById("msg");
			MSG.innerHTML = szType + " : " + szValue;
		}
		var elem = document.getElementById("testAxEvent");
		elem.attachEvent("testEvent", onTestEvent);
	</script>
</html>

Test 3 replaces attachEvent with addEventListener. Still the event is not triggered on IE11.

<!DOCTYPE html>
<html>
	<head>
		<title>TestEvent Example HTML</title>
		<meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="description" content="">
        <meta name="viewport" content="width=device-width, initial-scale=1">
	</head>
	<body>
		<table>
			<tr>
				<td>
					<OBJECT ID='testAxEvent' CLASSID='CLSID:BA19A985-C93E-491B-B801-2EB7F903C8CE' codebase="testAxEvent.cab" width='120' height='80'></OBJECT>
				</td>
			</tr>
			<tr><td  height='30'></td></tr>
			<tr>
				<td align=center><font size=5><div id='msg'></div></font>	
			</tr>
		</table>
	</body>
	<script>
		function onTestEvent(szType, szValue)
		{
			var MSG = document.getElementById("msg");
			MSG.innerHTML = szType + " : " + szValue;
		}
		var elem = document.getElementById("testAxEvent");
		// Test 3 - addEventListener
		// Does not work on IE11 !
		elem.addEventListener("testEvent", onTestEvent, true);
		elem.addEventListener("testEvent", onTestEvent, false);
	</script>
</html>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值