2009-02-10 9 views
7

Qualcuno non ha notato che JQuery usa i controlli ActiveX?Un problema serio con jQuery e sicurezza ActiveX?

Quando un utente ha limitato la propria sicurezza Activex, otterrà popup di prompt di script e una barra gialla nella parte superiore della finestra del browser. -Questa impostazione è predefinita su Windows Server. -Internet Cafe non supporta Active X. -Le workstation interne aziendali non supportano questo.

Considerato ciò, non vedo come le persone possano utilizzare JQuery in un'applicazione commerciale.

Usi JQuery in un'applicazione commerciale? Questo ti preoccupa? Pensi che dovrei preoccuparmi di questo?

risposta

15

unico punto in cui ActiveX è menzionato nel codice jQuery è per il ActiveXObject che viene utilizzato per 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(); 

C'è un open issue here ... sembra jQuery non fallback usare il nativo XMLHttpRequest su IE7 (questo è probabilmente quello che stai vivendo).

Anche questo potrebbe aiutare: link

6

jQuery, come la maggior parte delle librerie che forniscono il supporto per AJAX, userà ActiveX per creare l'oggetto XMLHttpRequest durante l'esecuzione in IE. Perché è così che ottieni un oggetto XMLHttpRequest in IE. Se lo disabiliti, allora non ottieni AJAX.

Quindi no, non preoccuparti. Se non si utilizza AJAX, non si avranno problemi sui sistemi in cui ActiveX è disabilitato; se lo fai, allora avrai problemi indipendentemente dalla libreria, a meno che non usi un work-around come usare iframe per inviare richieste in background.

2

Oltre ai motivi per perché javery potrebbe dover utilizzare ActiveX (ad esempio, AJAX), si dovrebbe anche considerare che non tutti gli usi di jQuery sono per la funzionalità AJAX.

0

Indipendentemente dalla funzionalità AJAX in IE, c'era un problema in jQuery 1.3.2 che causava la visualizzazione di quel banner quando jQuery era inizialmente caricato, anche se non si faceva nulla con esso. Vedi ticked #4017. Il problema è stato risolto in changeset #6268 e verrà risolto in jQuery 1.3.3 al rilascio.

0

Non sono sicuro se questo si applica al caso/domanda, ma ho notato che i conflitti di versione di jQuery portano a questo problema, quasi per impostazione predefinita, e se si sta amministrando un sito grande che è composto da diversi componenti (es. Portale, CMS, ecc.) Potresti inavvertitamente utilizzare più versioni di jQuery contemporaneamente. Nel mio caso questo sempre causato la comparsa di sicurezza ActiveX in IE 7.

0

Ho avuto lo stesso problema con un negozio che fanno richieste Ajax, così ho cambiato il mio file di jQuery per forza di carico XMLHttpRequest su IE 9

ricerca :

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

sostituirlo con:

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(); 
Problemi correlati