Poniższy fragment kodu nie działa w IE 11, generuje błąd składni w konsoli
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"));
Korzystanie z d3.js
wykresu dwudzielnego do wizualizacji
Ten kod powoduje problem w powyższym oświadczeniu d=>(d.part=="primary"? -40: 40)
javascript
internet-explorer
prakashkadakol
źródło
źródło
function (d) { return d.part == "primary" ? -40 : 40; }
.var f = () => "foo";
if (a=>0)
jest zawsze prawdą. Dzieje się tak, ponieważ stworzyłeś funkcję, a nie porównanie, a funkcje są prawdziwe.if (a<=0)
byłby właściwy sposób, aby to napisać.Odpowiedzi:
Używasz funkcji strzałkowych. IE11 ich nie obsługuje.
function
Zamiast tego użyj funkcji.Oto tłumaczenie Babel tego na 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"; });
źródło
this
:var f = (a) => {a.some1(); this.some2();};
tovar f = function(a) {a.some1(); this.some2();}.bind(this);
Unikaj używania funkcji strzałek, jeśli potrzebujesz obsługi przeglądarki IE 11, ponieważ nie jest ona obsługiwana
Zmień je na zwykłe funkcje, a kod powinien działać zgodnie z oczekiwaniami
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"; });
źródło
Ogólnie rzecz biorąc, zanim funkcje strzałkowe były funkcjami strzałkowymi, były zwykłymi JS
function
. W przypadku IE11 musimy po prostu cofnąć się w czasievar 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);
źródło
IE nie obsługuje obecnie notacji strzałek, ale istnieje wygodny i szybki sposób na transpilację plików
ES6
kodyES5.1
do pracy wIE
. odwiedź witrynę internetową Babel, a następnie wklej swoje kody w lewym polu i skopiuj kod prawego pola, który został przeniesiony do wcześniejszej wersji programuJavaScript
.Na przykład twój kod jest transponowany do:
"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"; });
źródło