rid00z
rid00z

Reputation: 1616

A serious issue with jQuery and ActiveX security?

Has anyone not noticed that JQuery uses ActiveX controls?

When a user has limited their activex security they will get script prompt popups and a yellow bar accross the top of their browser window. -This setting is by default on Windows Servers. -Internet Cafe's dont support Active X. -Company internal workstations dont support this.

Considering this I don't see how people can use JQuery in a commercial application.

Do you use JQuery in a commercial application? Does this concern you? Do you think I should be concerned with this?

Upvotes: 7

Views: 9241

Answers (6)

user1224703
user1224703

Reputation: 1

I had the same problem with a shop that do ajax requests, so i changed my jquery file to force load XMLHttpRequest on ie 9

search for:

var l = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

replace it with:

var isIE9 = navigator.userAgent.match(/MSIE 9.0/i) != null;
if(isIE9)
   var l = new XMLHttpRequest();               
else
   var l = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

Upvotes: 0

jdawg
jdawg

Reputation: 329

Not sure if this applies to your case/question, but I have noticed that jQuery version conflicts lead to this problem, almost by default, and if you are administering a large site that's made up of several components (i.e. portal, CMS, etc.) you may inadvertently be using multiple jQuery versions at once. In my case this always caused the ActiveX security popup in IE 7.

Upvotes: 0

Ryan Morlok
Ryan Morlok

Reputation: 806

Independent of the AJAX functionality in IE, there was an issue in jQuery 1.3.2 that caused that banner to display when jQuery was initially loaded, even if you didn't do anything with it. See ticked #4017. The issue has been resolved in changeset #6268 and will be addressed in jQuery 1.3.3 when it is released.

Upvotes: 0

Luca Matteis
Luca Matteis

Reputation: 29267

Only spot where ActiveX is mentioned in the jQuery code is for the ActiveXObject which is used for XMLHttpRequests:

// Create the request object; Microsoft failed to properly
// implement the XMLHttpRequest in IE7, so we use the ActiveXObject when it is available
var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

There's an open issue here ... seems like jQuery doesn't fallback to use the native XMLHttpRequest on IE7 (this is probably what you're experiencing).

Also this might help: link

Upvotes: 15

Shog9
Shog9

Reputation: 159618

jQuery, like most libraries that provide support for AJAX, will use ActiveX to create the XMLHttpRequest object when running in IE. Because that's how you get an XMLHttpRequest object in IE. If you disable it, then you don't get AJAX.

So no, don't worry about it. If you don't use AJAX, then you won't have problems on systems where ActiveX is disabled; if you do, then you will have issues regardless of library, unless you use a work-around such as using iframes to submit background requests.

Upvotes: 6

matt b
matt b

Reputation: 139931

In addition to the reasons for why jQuery might have to use ActiveX (i.e., AJAX), you should also consider that not all usages of jQuery are for AJAX functionality.

Upvotes: 2

Related Questions