2012-11-30 10 views
7

Sto tentando di impostare l'attributo aria-autocomplete su un elemento utilizzando jQuery. Tuttavia, quando IE10 è in esecuzione in modalità IE5 Quirks o in modalità standard IE7 produce un errore Member not found.Attributi ARIA in IE10

<input type="textbox" id="test" />​ 
$('#test').attr({"aria-autocomplete": "list"});​ 

Vedere questo jsFiddle per una demo. attribuisce

Ho provato vari altri ARIA come definito qui:

HTML 5: The Markup Language (ARIA Edition)

Alcuni producono lo stesso errore, altri non lo fanno.

Non riesco a riprodurre l'errore in IE9.

Si tratta di un bug in IE10? jQuery? O c'è qualche altra ragione per cui non capisco?

+0

jQuery non supporta la modalità quirks. Non sono sicuro della modalità degli standard IE7 in IE10. Dovrò esaminarlo. –

risposta

11

Poz,

Questo è un bug noto nel browser IE10 quando è in modalità di compatibilità. Si prega di votare questo ticket per aumentare la probabilità che venga corretto. https://connect.microsoft.com/IE/feedback/details/774078 Il ticket è stato inviato dal team jQuery.

Hai provato il codice di esempio in real IE7? Ho provato il tuo jsFiddle con browserstack (WinXP/IE7) e l'esempio ha funzionato senza errori.

Se si utilizzava la modalità di compatibilità per simulare il test di IE7, la buona notizia è che l'utilizzo di IE7 nativo funziona correttamente. La cattiva notizia è che c'è un bug nella modalità di compatibilità IE10.

+0

Grazie Elia. Ho svalutato il bug. Ho testato solo IE7 usando gli strumenti di sviluppo IE10, quindi dovrebbe essere ok allora. –

+0

@Elijah_Manor - quel collegamento è rotto. Ti dispiacerebbe fornirti un altro così da poterlo svalutare? Grazie – johntrepreneur

+0

@johntrepreneur - Il collegamento non è rotto. Se non riesci a vederlo, dovrai registrarti al sito e aderire al Programma di feedback IE. I commenti sul bug di jQuery fanno sembrare che tu debba solo registrarti. – BStruthers

0

Questa era la soluzione per me. Nella versione di jQuery che si sta utilizzando, a mio cas (jquery-1.7.2.js) c'è una sezione attorno alla riga 2764 che è come questo:

// Use this for any attribute in IE6/7 
// This fixes almost every IE6/7 issue 
nodeHook = jQuery.valHooks.button = { 
    get: function(elem, name) { 
     var ret; 
     ret = elem.getAttributeNode(name); 
     return ret && (fixSpecified[ name ] ? ret.nodeValue !== "" : ret.specified) ? 
      ret.nodeValue : 
      undefined; 
    }, 
    set: function(elem, value, name) { 
     // Set the existing or create a new attribute node 
     var ret = elem.getAttributeNode(name); 
     if (!ret) { 
      ret = document.createAttribute(name); 
      elem.setAttributeNode(ret); 
     } 
     return (ret.nodeValue = value + ""); 
    } 
}; 

Acoording a https://bugs.jquery.com/ticket/12577, si tratta di un problema di compability di IE10 in modalità IE7. la soluzione è di cambiare la variabile di ritorno in funzione set:

return (ret.nodeValue = value + ""); 
//for: 
elem.setAttribute(name, value + ""); 
return (ret.value);