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.jsgrá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
functionfunciones.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
ES6códigosES5.1para 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