2005: IE support broken in 1.6beta1

djs%n-c*******@gtempacc******** (Google Code) (Is this you? Claim this profile.)
June 17, 2011
What version are you running?
1.6 beta1

What's the URL of the page containing the problem?
e.g. reviews/r/976/

What steps will reproduce the problem?
Create new review or edit existing review.

What is the expected output? What do you see instead?

Cannot edit description or summary. Edit icon is missing and clicking on them has no effect.

What operating system are you using? What browser?

Had problem reported with IE6, but confirmed the behavior on IE8 as well.

Please provide any additional information below.
#1 david
I don't think this code has changed between 1.5 and 1.5 beta 1. Are you sure you're logged in to the site?
  • +NeedInfo
#2 djs%n-c*******@gtempacc******** (Google Code) (Is this you? Claim this profile.)
Yes, I'm logged in. In fact, it does appear as if I am not logged in for the review, though since none of the fields are editable. The top status line shows I am logged in and the green bar is available to publish the review request.

I tested this with a fresh devserver, and it did not reproduce the problem, so it seems it's not quite so simple.
#3 djs%n-c*******@gtempacc******** (Google Code) (Is this you? Claim this profile.)
I've cleared all cookies so that's not the issue. I've narrowed down the problem to somehow be related to having the site in the local intranet zone. If I remove it, the edit icons magically appear next to the fields. If I put it back into the zone, they go away. I'm trying to get the request headers to compare, but wireshark isn't cooperating with decoding the ssl... I also tried changing the security settings to match the internet zone without any behavior change.
#4 david
It sounds like it's probably having trouble loading some of the javascript files. Does IE8 have any debugging tools that can show you what's loading and what's not?
#5 djs%n-c*******@gtempacc******** (Google Code) (Is this you? Claim this profile.)
Yes there are some developer tools though they don't show quite the detail that Chrome and Firebug too. I think I have found the issue, though it's not clear to me why it suddenly started showing up for us now. See the section on IE8 and the Enterprise:

When in the intranet zone, IE8 defaults to IE7 document mode, which seems to have this problem, whereas it defaults to IE8 document mode outside this zone.

This explains why my test server worked (since I accessed it by ip, so it didn't get detected as intranet zone).

Presumably there is some reason why RB doesn't work in IE7 mode in IE8, but that's a bit beyond my capability to debug...
#6 ben.*****@gmai***** (Google Code) (Is this you? Claim this profile.)
I can confirm this behavior.  I was running ReviewBoard 1.5.5 with no problems, but upon upgrading to 1.6 beta 2 I started having problems with Internet Explorer.  None of the review request fields are editable (the pencil icons are also missing), and buttons like "Publish" and "Download Diff" don't do anything when clicked on.

I can also confirm that accessing the server (which is on our local intranet) using an IP address instead of a DNS name results in everything working as expected.

I am seeing this behavior in IE9, but colleagues have reported the same behavior in IE7.

There seem to be some Javascript problems when loading the page.  Here's what IE9's web developer console told me:

  SCRIPT1028: Expected identifier, string or number 
  datastore.js?1305235942, line 154 character 13
  SCRIPT1028: Expected identifier, string or number 
  ui.autocomplete.min.js?1305235942, line 1 character 5860
  SCRIPT5009: 'RB' is undefined 
  reviews.js?1305235942, line 8 character 1
  SCRIPT5007: Unable to get value of the property 'nodeType': object is null or undefined 
  jquery-1.3.2.min.js, line 19 character 13138

The first two errors correspond to commas that are immediately followed by a closing curly-brace.  The third error indicates that reviews.js doesn't recognize the 'RB' object, but since this is defined in datastore.js I'm assuming that this is a side effect of the first error.  I haven't yet been able to decipher the fourth error.

Removing these extraneous commas seems to fix the problem on my system.  Attached are diffs against datastore.js and autocomplete.min.js.  These changes were tested in IE7, IE9, and Firefox 4.0.1.  Using these changes results in zero Javascript error messages on the debug console for both IE and Firefox.
  • +
    <                 },
    >                 }
    <                 },
    >                 }
    <             public: true,
    >             public: true
    <                        "failed due to a server error:",
    >                        "failed due to a server error:"
    <                                "has failed due to a server error:",
    >                                "has failed due to a server error:"
    <                 },
    >                 }
    <                     issue_opened: self.issue_opened,
    >                     issue_opened: self.issue_opened
    <                 },
    >                 }
    <                 },
    >                 }
    < (function(a){a.widget("ui.autocomplete",{_init:function(){a.extend(this.options,{delay:this.options.delay!=undefined?this.options.delay:(this.options.url?this.options.ajaxDelay:this.options.localDelay),max:this.options.max!=undefined?this.options.max:(this.options.scroll?this.options.scrollMax:this.options.noScrollMax),highlight:this.options.highlight||function(y){return y},formatMatch:this.options.formatMatch||this.options.formatItem});var l=this.element[0],g=this.options,b=a(l).attr("autocomplete","off").addClass(g.inputClass),c=a.ui.keyCode,p="",m=a.ui.autocomplete.cache(g),e=0,x={mouseDownOnSelect:false},j,w,u,r=a.ui.autocomplete.select(g,l,d,x);if(g.result){b.bind("result.autocomplete",g.result)}a.browser.opera&&a(l.form).bind("submit.autocomplete",function(){if(w){w=false;return false}});b.bind((a.browser.opera?"keypress":"keydown")+".autocomplete",function(y){u=y.keyCode;switch(y.keyCode){case c.UP:y.preventDefault();if(r.visible()){r.prev()}else{t(0,true)}break;case c.DO
#7 ben.*****@gmai***** (Google Code) (Is this you? Claim this profile.)
FYI, the previous patch to ui.autocomplete.min.js corresponds to removing the comma at the end of line 431 in ui.autocomplete.js.
#8 chipx86
Fixed on master (35b3bf2). Thanks!
  • -NeedInfo
  • -Priority-Medium
  • +chipx86