2015-06-15 7 views
9

Quando chiamo cloneNode() su un elemento con il nome feGaussianBlur con l'attributo stdDeviation, InternetExplorer (10 e 11) converte sempre il valore di 1.72443e+009.cloneNode() cambia valore di attributo in InternetExplorer 10 e 11

Ecco un quattro-liner che illustra il problema: https://jsfiddle.net/kytbh4Ls/6/

Se si modifica il nome dell'elemento, utilizzare un nome di attributo diverso o eseguire il violino su qualsiasi altro browser (Chrome, Firefox), tutto ciò che viene eseguito come previsto . L'utilizzo di un valore di attributo diverso non cambierà nulla.

Quale potrebbe essere la ragione di questo comportamento davvero strano? E c'è qualcosa che può essere fatto al riguardo?

Ecco un violino modificato utilizzando jQuery di clone() invece di cloneNode(), purtroppo fatto allo stesso risultato: https://jsfiddle.net/kytbh4Ls/7/

+1

Sembra un bug. Segnalalo a Microsoft. http://blog.reybango.com/2013/02/28/submitting-an-internet-explorer-bug-to-microsoft/ –

+0

Vuoi dire, indipendentemente dal valore che aveva in precedenza? – Bergi

risposta

1

Questo è un chiaro bug in Internet Explorer. Se è vero che Internet Explorer utilizza stdDeviation anziché stdDeviationX e stdDeviationY, la funzione cloneNode() non ha alcun problema con gli attributi. Dovrebbe restituire un clone del nodo, non un nodo con attributi modificati.

È necessario segnalare questo al team di sviluppo di Internet Explorer (se si ha il tempo di farlo). Attualmente tutto ciò che si può probabilmente fare è implementare una soluzione manuale.

0

Il problema è che IE non usa l'attributo stdDeviation. Invece usa stdDeviationX e stdDeviationY.

Vai a questa violino ... FIDDLE

Ecco la Microsoft page for feGaussianBlur

var element = document.createElementNS('http://www.w3.org/2000/svg', "feGaussianBlur"); 
element.setAttribute('stdDeviationX', 5); 
element.setAttribute('stdDeviationY', 5); 

var clonedElement = element.cloneNode(); 

alert("Original:" + element.getAttribute("stdDeviationX") + ", Cloned:" + clonedElement.getAttribute("stdDeviationX")); 
+1

Grazie, ma stdDeviationX e stdDeviationY non funzionano in SVG su InternetExplorer. L'attributo corretto è stdDeviation. Ecco un SVG molto semplice che confronta gli attributi: https://jsfiddle.net/1vkn22bp/ Come puoi vedere, solo stdDeviation dà l'effetto desiderato. Inoltre, anche se stdDeviation non è supportato, non c'è motivo per il browser di modificare il valore dell'attributo sulla clonazione. – Waruyama

+1

Notorious ha ragione. IE utilizza stdDeviationX e stdDeviationY. Cosa ti impedisce di impostare stdDeviation sull'elemento clonato come clonedElement.setAttribute ("stdDeviation", 5); –

+0

Non so quale versione IE stai testando, ma in IE11 'stdDeviationX' e' stdDeviationY' non funzionano, mentre 'stdDeviation' dà l'effetto ma si interrompe quando si clona. – oBusk

Problemi correlati