El siguiente fragmento de código no funciona en IE 11, arroja un error de sintaxis en la consola
g.selectAll(".mainBars")
.append("text")
.attr("x", d => (d.part == "primary" ? -40 : 40))
.attr("y", d => +6)
.text(d => d.key)
.attr("text-anchor", d => (d.part == "primary" ? "end" : "start"));
Uso de d3.js
gráfico bipartito para visualización
Este código causa el problema en la declaración anterior d=>(d.part=="primary"? -40: 40)
javascript
internet-explorer
prakashkadakol
fuente
fuente
function (d) { return d.part == "primary" ? -40 : 40; }
.var f = () => "foo";
if (a=>0)
siempre es cierto. Esto se debe a que lo que hizo fue crear una función, no una comparación y las funciones son verdaderas.if (a<=0)
sería la forma correcta de escribir eso.Respuestas:
Estás usando funciones de flecha. IE11 no los admite. En su lugar, utilice
function
funciones.Aquí está la traducción de Babel de eso a ES5:
g.selectAll(".mainBars").append("text").attr("x", function (d) { return d.part == "primary" ? -40 : 40; }).attr("y", function (d) { return +6; }).text(function (d) { return d.key; }).attr("text-anchor", function (d) { return d.part == "primary" ? "end" : "start"; });
fuente
this
:var f = (a) => {a.some1(); this.some2();};
avar f = function(a) {a.some1(); this.some2();}.bind(this);
Evite el uso de funciones de flecha si necesita admitir IE 11, ya que no es compatible
Cámbielos a funciones regulares y su código debería funcionar como espera
g.selectAll(".mainBars").append("text").attr("x",function(d) { return d.part=="primary"? -40: 40; }).attr("y",function(d){ return +6; }).text(function(d) { return d.key; }).attr("text-anchor", function(d) { return d.part=="primary"? "end": "start"; });
fuente
En general, antes de que las funciones de flecha fueran funciones de flecha, eran JS normales
function
. Entonces, con IE11 solo tenemos que dar un paso atrás en el tiempovar fruits=["apple","banana","orange"]; var modernResult=fruits.find(e => e.includes("nana")); console.log(modernResult); var IEresult=fruits.find(function(e){return e.includes("nana")}); console.log(IEresult);
fuente
IE no admite la notación de flechas a partir de ahora, pero hay una forma práctica y rápida de transpilar sus
ES6
códigosES5.1
para trabajar en ellosIE
. visite el sitio web de Babel , luego pegue sus códigos en el cuadro de la izquierda y copie el código del cuadro de la derecha que se transpiró a la versión anterior deJavaScript
.Por ejemplo, su código se transpila a:
"use strict"; g.selectAll(".mainBars").append("text").attr("x", function (d) { return d.part == "primary" ? -40 : 40; }).attr("y", function (d) { return +6; }).text(function (d) { return d.key; }).attr("text-anchor", function (d) { return d.part == "primary" ? "end" : "start"; });
fuente