Project

General

Profile

Bug #2009

Javascript errors prevent all tabs from showing in IE11

Added by Prof Yaffle over 7 years ago. Updated over 7 years ago.

Status:
Rejected
Priority:
Normal
Assignee:
-
Category:
User Interface
Target version:
-
Start date:
2014-03-17
Due date:
% Done:

0%

Estimated time:
Found in version:
3.9.438~gd328f74
Affected Versions:

Description

Internet Explorer 11 only appears to render the EPG and DVR tabs - other browsers on the same machine render all tabs, so my suspicion is that it's something about how IE parses the .js files.

Tested on multiple systems here and with another user. Discussion here:

https://tvheadend.org/boards/5/topics/11309?r=11314

And what I suspect is the original bug here, risen from the grave:

https://tvheadend.org/issues/1081

Javascript console errors:

SCRIPT1010: Expected identifier
File: idnode.js, Line: 66, Column: 9

SCRIPT1028: Expected identifier, string or number
File: mpegts.js, Line: 15, Column: 18

SCRIPT1010: Expected identifier
File: status.js, Line: 56, Column: 11

Screenshot with supporting details attached.


Files

tvheadend IE Missing Tabs.jpg (364 KB) tvheadend IE Missing Tabs.jpg Screenshot of tabs and errors Prof Yaffle, 2014-03-17 23:34

History

#1

Updated by Prof Yaffle over 7 years ago

FWIW, I ran the offending files through javascriptlint.com... as well as various warnings about semicolons and curly braces, I got:

idnode.js:

  66    if (f.enum.type == 'api') {
      ========^
      SyntaxError: missing name after . operator

mpegts.js:

 15    baseParams : { class : 'mpegts_network', enum: 1 },
     =================^
     SyntaxError: invalid property id

status.js:

 56                          r.data.in       = m.in;
     ===============================^
     SyntaxError: missing name after . operator
#2

Updated by Prof Yaffle over 7 years ago

Looks like this is 99% a duplicate of issue #1973 - serves me right for not searching properly! That concludes that the problem is that this line from extjs.c is the problem:

97: htsbuf_qprintf(hq, "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=8\">\n");

As far as I can see, this forces later editions of IE to operate as IE8. Combined with the above "syntax errors", I really can't say whether IE8 got it right (and the errors are real, so the issue is with the code) or whether IE8 got it wrong (and 9+ work properly, so the issues are with that earlier browser).

Upgrade everyone to Firefox, that's what I say :-)

By all means, close this one with no further debate if required.

#3

Updated by Adam Sutton over 7 years ago

No everyone should use Chrome, as that's all I use :p and therefore when I dick about with the UI (which I try not to do too often) that's about the only thing garaunteed to work. And then it's only with the pre-bundled version of chromium on the latest Ubuntu LTS release :p

Looks like the errors relate to use of javascript keywords as identifiers. Meh!

Adam

#4

Updated by Sam Stenvall over 7 years ago

@Prof Yaffle: does the problem go away if you remove the X-UA-Compatible header? If so I think it should be removed, there's no point in supporting IE8 if it breaks all newer versions.

#5

Updated by Benjamin H over 7 years ago

Hi, looking at my inital bug report #1973 I must admit that I could have explained a bit more detailed what I did and what my findings were.
I am manually removing this line from my tvheadend builds for like 2 months or so. I am using Internet Explorer as main browser. In general IE11 (Win8.1), but tested versions 9 and 10 as well (Win7). All work just fine.(when X-UA-Compatible line is removed) Otherwise the webui is just useless on IE.

I just now quickly tested IE8 on an old Windows XP virtual machine. It doesn't matter which document mode you force IE8 into, the webui won't work. So in conclusion: Unless someone is willing to invest time to investigate how to get legacy IE8 working, just remove the X-UA meta tag.

#6

Updated by Prof Yaffle over 7 years ago

In my heart, I'd vote for breaking IE8 at the expense of other browsers, though there may be a way to coexist (e.g. check the user-agent string and only insert this line if it reports IE8).

Sadly, we shouldn't simply abandon IE8, as it shipped with Win7 and so is technically supported for another year (13th January 2015 for Mainstream Support):

https://support.microsoft.com/lifecycle/default.aspx?LN=en-gb&x=17&y=12&c2=14019

#7

Updated by Adam Sutton over 7 years ago

  • Status changed from New to Rejected

Not doing browser validation checks, if someone fancies making the code fully multi-browser compatible I'll accept the fix. But there were loads of similar issues reported and no need really, we all know it's not very good!

Adam

#8

Updated by Prof Yaffle over 7 years ago

Adam -

Two thoughts here (and I don't blame you for your rejection, as there are far bigger issues to worry about):

1. Would we be better off simply removing the X-UA-Compatible declaration, then? I suspect that would better support IE9+ but abandon IE8 to the wolves, which might be better than the way it is now.

2. I can't easily test this, not exactly being surrounded by Windows boxes, but some reading suggests you can use multiple modes - so content="IE=8; IE=Edge" should mean different things to IE8 and IE8+.

References:

http://msdn.microsoft.com/en-us/library/jj676915(v=vs.85).aspx

http://stackoverflow.com/questions/14611264/x-ua-compatible-content-ie-9-ie-8-ie-7-ie-edge

... if anyone out there understands this better than me, that might be an option if we can test it on multiple versions?

Also available in: Atom PDF