Below piece of code does not work in IE 11, it throws a syntax error in the console
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"));
Using d3.js
bipartite chart for visualization
This code causing the issue in above statement d=>(d.part=="primary"? -40: 40)
Arrow functions are not supported in IE11 or earlier.
BROWSER SUPPORT FOR JAVASCRIPT Arrow functionsChrome version 4 to 44 doesn't supports. Chrome version 45 to 70 supports JAVASCRIPT Arrow functions.
An arrow function expression is an anonymous function expression written with the “fat arrow” syntax ( => ). Like traditional function expressions, arrow functions are not hoisted, and so you cannot call them before you declare them. They are also always anonymous—there is no way to name an arrow function.
You're using arrow functions. IE11 doesn't support them. Use function
functions instead.
Here's Babel's translation of that to 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"; });
Since none of the code uses this
, you don't have to worry about preserving arrow function this
behavior (since traditional functions get their this
by how they're called, but arrow functions close over this
). But if the code did use this
and you wanted it to behave like an arrow function would, you'd want to use the usual techniques for that.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With