Page MenuHomePhabricator

ActiveX prompt on IE8
Closed, ResolvedPublic

Description

Screenshot showing the ActiveX prompt on IE8

The usability JS causes IE with certain "Internet security" settings to display a prompt about ActiveX. See the attached screenshot from IE8.

jquery unconditionally uses the ActiveX implementation of XHR on IE, even if window.XmlHttpRequest exists. This may cause this prompt (before page display) on IE depending on the setting of the "internet security options", which a user may not even have control over as these "internet security" settings are frequently locked off for normal users on Windows boxes. If the setting is set to "prompt", the prompt will appear each and every time a page is visited on any WMF project where the UsabilityInitiative JS runs. (Or even, where jquery runs.)

This applies to IE6, IE7, and also IE8.

IMO jquery should be patched such that it uses window.XmlHttpRequest when available, and furthermore such that it doesn't try to instantiate an ActiveX control already upon loading, but only when really needed (such as in response to a mouse click). Unfortunately there is no way (that I know of) a JS could detect that client-side setting, so the best bet is to make sure that at least plain viewing of pages doesn't trigger that stupid prompt.


Version: unspecified
Severity: major
Platform: PC

Attached:

ie8_prompt.png (957×1 px, 37 KB)

Details

Reference
bz21714

Event Timeline

bzimport raised the priority of this task from to Lowest.Nov 21 2014, 10:56 PM
bzimport set Reference to bz21714.

BTW, ActiveX activation upon loading of jquery 1.3.2 can be avoided by applying the simple patch described at http://dev.jquery.com/changeset/6268

This should be fixed once we move to jQuery 1.4

jQuery 1.4 is out, but still not compatible. We will continue working on upgrading, but in the mean time, there's nothing to do here.

Is this still an issue? From jQuery we currently use:

		xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
			function() {
				return new window.XMLHttpRequest();
			} :
			function() {
				try {
					return new window.ActiveXObject("Microsoft.XMLHTTP");
				} catch(e) {}
			},

This should no longer happen on IE 7 and IE 8 which have native XMLHTTPRequest, we've updated to .... now jQuery 1.6.4 I think.

IE 6 will still need to use the ActiveX, but them's the breaks. Don't like it, upgrade.