Oggetto localStorage JavaScript interrotto in IE11 su Windows 7

L’object localStorage in Internet Explorer 11 (build di Windows 7) contiene rappresentazioni di stringa di determinate funzioni anziché chiamate native come ci si aspetterebbe.

Questo rompe solo con JavaScript vanigliato e siti come JSFiddle non hanno alcun problema con questo codice, ma ho il sospetto che sia perché ci sono polyfill localStorage sul posto che lo correggono.

Prendi questo codice di pagina HTML per esempio:

   localStorage.setItem('test', '12345'); alert(localStorage.getItem('test')); localStorage.clear();  

Funziona perfettamente in tutti i miei browser installati ad eccezione di IE11. Si verifica un errore nella prima riga ” SCRIPT5002: funzione prevista “.

Dando un’occhiata a quale tipo di funzione setItem è effettivamente nella console degli strumenti di sviluppo di IE, si afferma che è una stringa …?

  typeof localStorage.setItem === 'string' // true 

La stampa della stringa per setItem visualizza quanto segue:

 "function() { var result; callBeforeHooks(hookSite, this, arguments); try { result = func.apply(this, arguments); } catch (e) { callExceptHooks(hookSite, this, arguments, e); throw e; } finally { callAfterHooks(hookSite, this, arguments, result); } return result; }" 

Stranamente, non tutte le funzioni sono state sostituite con stringhe, ad esempio, la corrispondente funzione getItem è effettivamente una funzione e funziona come previsto.

  typeof localStorage.getItem === 'function' // true 

La modifica della modalità documento (emulazione) su 10 o 9 continua a non risolvere il problema ed entrambi danno lo stesso errore. La modifica della modalità documento su 8 fornisce il seguente errore: “L’ object non supporta questa proprietà o questo metodo ” che è previsto poiché IE8 non supporta localStorage .

Qualcun altro ha lo stesso problema con IE11 su Windows 7 in cui l’object localStorage sembra ‘danneggiato / corrotto’?