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
  • Not seeing this. Have you disabled all plug-ins, cleared cache/history/cookies, and hard-refreshed the site? – Aaron Bertrand Mar 31 '14 at 21:15
  • Is IE8 still supported? – rene Mar 31 '14 at 21:20
  • @rene Nope, 8 (and 9) not on the list. – Aaron Bertrand Mar 31 '14 at 21:22
  • @rene - to the extent that things should work, even if they are not "pretty", yes. – Oded Mar 31 '14 at 21:22
  • 3
    Three unicoins say this is related to the prank. – Frédéric Hamidi Mar 31 '14 at 21:24
  • @Oded That is too bad, now you have to fix that bug ;-) – rene Mar 31 '14 at 21:24
  • According to this, it might be caching issue. Try clearing your cache. Unless @Oded can repro with IE8? – Shadow The Curly Braced Wizard Mar 31 '14 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 '14 at 15:54
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();
  • 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? – michaelb958 Apr 1 '14 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! – Nick Craver Apr 1 '14 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 '14 at 14:11
  • Never-mind my last comment. It's working again. Thanks for this fix. – Sparky Apr 1 '14 at 15:53

You must log in to answer this question.

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