admin管理员组

文章数量:1026989

So I have this code (a function) that works in Google Chrome/Fire Fox but not in IE. If I ment this certain line, everything runs fine, except that line is crucial.

I have this function called ReadCookie, which basically just stores the cookies into an array called cookiearray.

function ReadCookie() {

var allcookies = document.cookie; //variable called "allcookies" stores all the cookies.
cookiearray = allcookies.split(';').map(c => c.split('=')[1]); //cookiearray is an array that has all the values as strings.

}

IE said that the 4th line is incorrect cookiearray = allcookies.split(';').map(c => c.split('=')[1]); but I don't know why.

Thanks!

So I have this code (a function) that works in Google Chrome/Fire Fox but not in IE. If I ment this certain line, everything runs fine, except that line is crucial.

I have this function called ReadCookie, which basically just stores the cookies into an array called cookiearray.

function ReadCookie() {

var allcookies = document.cookie; //variable called "allcookies" stores all the cookies.
cookiearray = allcookies.split(';').map(c => c.split('=')[1]); //cookiearray is an array that has all the values as strings.

}

IE said that the 4th line is incorrect cookiearray = allcookies.split(';').map(c => c.split('=')[1]); but I don't know why.

Thanks!

Share Improve this question asked Jun 11, 2016 at 22:39 EdwinEdwin 4001 gold badge5 silver badges19 bronze badges 2
  • 1 you could also try a syntax from some future ES7 working draft for instance. If you really want your production code to work - you'll stick to using a standard JS syntax and methods instead. – Bekim Bacaj Commented Jun 11, 2016 at 22:50
  • @BekimBacaj Or using a transpiler.. :D – user2864740 Commented Jun 11, 2016 at 23:01
Add a ment  | 

3 Answers 3

Reset to default 4

Arrow functions (like c => c.split('=')[1]) are a new feature in ES6. Chrome supports them. Internet Explorer does not.

I believe it's an ECMA script 6 thing with the way you're using the map.

So you can write it like this instead:

cookiearray = allcookies.split(';').map(function (c) {
  return c.split('=')[1];
}); //cookiearray is an array that has all the values as strings.

The solution I implemented was as follows

  1. goto: https://babeljs.io/repl

  2. Paste in your code and select es2015.

  3. In your new code paste the following, if you are using forEach (which is again not supported in IE) :

    if (window.NodeList && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; }

  4. Use indexOf instead of includes

So I have this code (a function) that works in Google Chrome/Fire Fox but not in IE. If I ment this certain line, everything runs fine, except that line is crucial.

I have this function called ReadCookie, which basically just stores the cookies into an array called cookiearray.

function ReadCookie() {

var allcookies = document.cookie; //variable called "allcookies" stores all the cookies.
cookiearray = allcookies.split(';').map(c => c.split('=')[1]); //cookiearray is an array that has all the values as strings.

}

IE said that the 4th line is incorrect cookiearray = allcookies.split(';').map(c => c.split('=')[1]); but I don't know why.

Thanks!

So I have this code (a function) that works in Google Chrome/Fire Fox but not in IE. If I ment this certain line, everything runs fine, except that line is crucial.

I have this function called ReadCookie, which basically just stores the cookies into an array called cookiearray.

function ReadCookie() {

var allcookies = document.cookie; //variable called "allcookies" stores all the cookies.
cookiearray = allcookies.split(';').map(c => c.split('=')[1]); //cookiearray is an array that has all the values as strings.

}

IE said that the 4th line is incorrect cookiearray = allcookies.split(';').map(c => c.split('=')[1]); but I don't know why.

Thanks!

Share Improve this question asked Jun 11, 2016 at 22:39 EdwinEdwin 4001 gold badge5 silver badges19 bronze badges 2
  • 1 you could also try a syntax from some future ES7 working draft for instance. If you really want your production code to work - you'll stick to using a standard JS syntax and methods instead. – Bekim Bacaj Commented Jun 11, 2016 at 22:50
  • @BekimBacaj Or using a transpiler.. :D – user2864740 Commented Jun 11, 2016 at 23:01
Add a ment  | 

3 Answers 3

Reset to default 4

Arrow functions (like c => c.split('=')[1]) are a new feature in ES6. Chrome supports them. Internet Explorer does not.

I believe it's an ECMA script 6 thing with the way you're using the map.

So you can write it like this instead:

cookiearray = allcookies.split(';').map(function (c) {
  return c.split('=')[1];
}); //cookiearray is an array that has all the values as strings.

The solution I implemented was as follows

  1. goto: https://babeljs.io/repl

  2. Paste in your code and select es2015.

  3. In your new code paste the following, if you are using forEach (which is again not supported in IE) :

    if (window.NodeList && !NodeList.prototype.forEach) { NodeList.prototype.forEach = Array.prototype.forEach; }

  4. Use indexOf instead of includes

本文标签: javascriptI get a syntax error in IE but not in ChromeStack Overflow