Quantcast
Channel: Internet Explorer Web Development forum
Viewing all articles
Browse latest Browse all 3527

addEventListener for activeX events in IE11

$
0
0

In IE11, the attachEvent has been dropped in favour of addEventListener.

Nevertheless, when I replace all the attachEvent instances that were used to bind to events triggered by the activeX, such events are no longer triggered.

Here are some html code examples that illustrate the problem.

(I have created a simple activeX based on an MFC activeX control that simply triggers an event inside OnCreate. This event sends 2 strings as parameters. If you need the code or even the ocx file for the activeX, please let me know.)

Test 1:

<!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:

<!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:

<!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>

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.

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.

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

What am I missing here? Am I not using the correct addEventListener syntax? Does addEventListener supports binding to activeX events at all? Do I need to make changes to the calling conventions on the activeX side?

Thank you,

José


Viewing all articles
Browse latest Browse all 3527

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>