7

I'm stuck with Internet Explorer, so this matters to me. It appears to me that there's been a recent change to Stack Overflow which introduced the error below. The symptoms I see are that I can no longer vote on questions (possibly other effects, but that's the first one).

Webpage error details

User Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0)
Timestamp: Mon, 31 Mar 2014 21:09:18 UTC


Message: Invalid character
Line: 2
Char: 17424
Code: 0
URI: http://meta.stackoverflow.com/content/Js/full.en.js?v=f2e7c53fe8b8
8
  • Not seeing this. Have you disabled all plug-ins, cleared cache/history/cookies, and hard-refreshed the site?
    – Aaron Bertrand Staff
    Mar 31, 2014 at 21:15
  • Is IE8 still supported?
    – rene
    Mar 31, 2014 at 21:20
  • @rene Nope, 8 (and 9) not on the list.
    – Aaron Bertrand Staff
    Mar 31, 2014 at 21:22
  • @rene - to the extent that things should work, even if they are not "pretty", yes.
    – Oded
    Mar 31, 2014 at 21:22
  • 3
    Three unicoins say this is related to the prank. Mar 31, 2014 at 21:24
  • @Oded That is too bad, now you have to fix that bug ;-)
    – rene
    Mar 31, 2014 at 21:24
  • According to this, it might be caching issue. Try clearing your cache. Unless @Oded can repro with IE8? Mar 31, 2014 at 23:00
  • Not just IE8. This also affected older versions of Firefox and Safari v4. The fix below seems to have solved it.
    – Sparky
    Apr 1, 2014 at 15:54

1 Answer 1

11

We changed to the UglifyJS2 compiler yesterday to eliminate the dependency on Closure in our environment. Why? Cause Java, that's why. We don't install Java on our build machines, it just happens to be there in a small way because we use TeamCity as our build system, so the agent itself is Java-based and contains a small JRE within. The conflict of required Java for the latest Closure vs. the version the agents were on was kinda the last straw there.

UglifyJS gives us more control, easier multithreading, and smaller files all at the same time...so that's nice.

Now, how does this break you? Diacritics. Here's the start of the code from Uglify that's breaking you (spaced out by me):

StackExchange.helpers.noDiacritics = function() {
  var e = { à åáâäãåąÉᵄᶛ:"a",
            æǣǽᴂᵆ:"ae",
            çćÄĉ:"c",
            ýŸÿʎ:"y",

IE8 isn't a fan of that ASCII in object literals keys, every other browser has no problem with it. A fix for this is rolling out now, by quoting those keys.

For those really curious, here's the changeset to fix such a thing in your own UglifyJS usage:

var compressor = uglify.Compressor();
function processJs(file, source, done) {
  try {
-    var ast = uglify.parse(source);
+    var ast = uglify.parse(source),
+        s = uglify.OutputStream({ quote_keys: true });
     ast.figure_out_scope();
     ast = ast.transform(compressor);
     ast.figure_out_scope();
     ast.compute_char_frequency();
     ast.mangle_names();
-    var code = ast.print_to_string();
+    ast.print(s);
+    var code = s.get();
4
  • Far be it from me to second-guess a Developer™, but shouldn't that second added line have a bit more punctuation on the end? Apr 1, 2014 at 10:50
  • @michaelb958 doh, good catch - I did simplify it a bit vs our actual usage so others can benefit from this more clearly - thanks! Apr 1, 2014 at 10:52
  • Safari 4 was working fine until yesterday too. The number of computers at my location where I can participate on SO is down by one. :(
    – Sparky
    Apr 1, 2014 at 14:11
  • Never-mind my last comment. It's working again. Thanks for this fix.
    – Sparky
    Apr 1, 2014 at 15:53

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .