Closed Bug 1193947 Opened 9 years ago Closed 7 years ago

DeKlab, GA county school locator will not display application

Categories

(Web Compatibility :: Site Reports, defect)

Firefox 39
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED DUPLICATE of bug 1070763

People

(Reporter: gio.marrero87, Unassigned, NeedInfo)

References

()

Details

(Whiteboard: [sitewait] [http] [BOM])

User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.130 Safari/537.36
Firefox for Android

Steps to reproduce:

Web Page will not display on Firefox but will on Chrome, Safari, EI

http://www.dekalb.k12.ga.us/www/school-locator/


Actual results:

Not Displaying


Expected results:

Web page should display

http://www.dekalb.k12.ga.us/www/school-locator/
Severity: normal → critical
Group: core-security
Giovanni, please let the developers set the severity.
Severity: critical → normal
The server is not reachable or broken, I tried with both FF40 and IE11, no success.
Even the cached version in Google doesn't work.
Status: UNCONFIRMED → RESOLVED
Closed: 9 years ago
Resolution: --- → INVALID
I can reach the web site. I didn't go very far debugging but it appears that it uses display to show the progress div and when it completes it is supposed to set the progress to display:none and the remainder to display:block I believe. It performs a number of tests and may fail to display the content due to our failure to pass them. Regardless, this isn't invalid due to an unreachable server.
Status: RESOLVED → REOPENED
Ever confirmed: true
Resolution: INVALID → ---
Does the code below mean anything to anybody? This is where the page is failing, not sure why.

jimu.js init... main.js:148:7
Load Config: timer started ConfigLoader.js:90
Load Config: 175.06ms ConfigManager.js:101
Load Map: timer started MapManager.js:65
Error: Invalid template: <div>

  <div class="loading-container">

      <img data-dojo-attach-point="loadingImg"/>

      <p data-dojo-attach-point="textNode">${nls.loading}...</p>

  </div>

</div>
Stack trace:
.cache["dijit/_TemplatedMixin"]/</d<.buildRendering@http://js.arcgis.com/3.13/init.js:286:377
.cache["dijit/_WidgetBase"]/</f<.create@http://js.arcgis.com/3.13/init.js:1123:120
.cache["dijit/_WidgetBase"]/</f<.postscript@http://js.arcgis.com/3.13/init.js:1122:94
d/<@http://js.arcgis.com/3.13/init.js:108:190
clazz<._showMap@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/MapManager.js:66:24
clazz<.showMap@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/MapManager.js:60:9
clazz<._loadMap@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/LayoutManager.js:521:7
clazz<.onAppConfigLoaded@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/LayoutManager.js:96:7
.cache["dojo/_base/lang"]/</g.hitch/<@http://js.arcgis.com/3.13/init.js:177:294
l/</h@http://js.arcgis.com/3.13/init.js:244:108
.cache["dojo/on"]/</k.emit@http://js.arcgis.com/3.13/init.js:220:234
.cache["dojo/on"]/</k.emit@http://js.arcgis.com/3.13/init.js:221:296
.cache["dojo/Evented"]/</e.prototype.emit@http://js.arcgis.com/3.13/init.js:183:337
.cache["dojo/topic"]/</<.publish@http://js.arcgis.com/3.13/init.js:197:389
clazz<.loadConfig/<@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/ConfigManager.js:102:1
.cache["dojo/_base/lang"]/</g.hitch/<@http://js.arcgis.com/3.13/init.js:177:294
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</g/<@http://js.arcgis.com/3.13/init.js:200:217
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:70
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</g/<@http://js.arcgis.com/3.13/init.js:200:217
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</f/b.then@http://js.arcgis.com/3.13/init.js:202:308
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:34
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:70
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</g/<@http://js.arcgis.com/3.13/init.js:200:217
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
clazz<.loadWidgetsManifest/<@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/ConfigLoader.js:720:11
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/promise/all"]/</</</<@http://js.arcgis.com/3.13/init.js:815:54
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
clazz<.loadWidgetManifest/<@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/WidgetManager.js:193:15
.cache["dojo/_base/lang"]/</g.hitch/<@http://js.arcgis.com/3.13/init.js:177:294
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:70
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:103
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:70
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
q@http://js.arcgis.com/3.13/init.js:160:170
f@http://js.arcgis.com/3.13/init.js:164:199
 .cache["dijit/_TemplatedMixin"]/</d<.buildRendering@http://js.arcgis.com/3.13/init.js:286:377
.cache["dijit/_WidgetBase"]/</f<.create@http://js.arcgis.com/3.13/init.js:1123:120
.cache["dijit/_WidgetBase"]/</f<.postscript@http://js.arcgis.com/3.13/init.js:1122:94
d/<@http://js.arcgis.com/3.13/init.js:108:190
clazz<._showMap@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/MapManager.js:66:24
clazz<.showMap@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/MapManager.js:60:9
clazz<._loadMap@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/LayoutManager.js:521:7
clazz<.onAppConfigLoaded@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/LayoutManager.js:96:7
.cache["dojo/_base/lang"]/</g.hitch/<@http://js.arcgis.com/3.13/init.js:177:294
l/</h@http://js.arcgis.com/3.13/init.js:244:108
.cache["dojo/on"]/</k.emit@http://js.arcgis.com/3.13/init.js:220:234
.cache["dojo/on"]/</k.emit@http://js.arcgis.com/3.13/init.js:221:296
.cache["dojo/Evented"]/</e.prototype.emit@http://js.arcgis.com/3.13/init.js:183:337
.cache["dojo/topic"]/</<.publish@http://js.arcgis.com/3.13/init.js:197:389
clazz<.loadConfig/<@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/ConfigManager.js:102:1
.cache["dojo/_base/lang"]/</g.hitch/<@http://js.arcgis.com/3.13/init.js:177:294
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</g/<@http://js.arcgis.com/3.13/init.js:200:217
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:70
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</g/<@http://js.arcgis.com/3.13/init.js:200:217
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</f/b.then@http://js.arcgis.com/3.13/init.js:202:308
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:34
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:70
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</g/<@http://js.arcgis.com/3.13/init.js:200:217
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
clazz<.loadWidgetsManifest/<@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/ConfigLoader.js:720:11
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/promise/all"]/</</</<@http://js.arcgis.com/3.13/init.js:815:54
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
clazz<.loadWidgetManifest/<@http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/WidgetManager.js:193:15
.cache["dojo/_base/lang"]/</g.hitch/<@http://js.arcgis.com/3.13/init.js:177:294
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:199:431
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:70
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:103
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
.cache["dojo/Deferred"]/</a@http://js.arcgis.com/3.13/init.js:200:309
.cache["dojo/Deferred"]/</k@http://js.arcgis.com/3.13/init.js:200:70
.cache["dojo/Deferred"]/</m@http://js.arcgis.com/3.13/init.js:199:357
.cache["dojo/Deferred"]/</f/this.resolve@http://js.arcgis.com/3.13/init.js:201:441
q@http://js.arcgis.com/3.13/init.js:160:170
f@http://js.arcgis.com/3.13/init.js:164:199
 init.js:209:10
n() init.js:209
k/g<() init.js:209
.cache["dojo/_base/array"]/</g.filter() init.js:230
k() init.js:209
Component: Untriaged → General
Product: Firefox → Firefox for Android
Version: 39 Branch → Firefox 39
This is broken on both desktop and Firefox for Android. Mike do you have time to look at this?
Component: General → Mobile
Flags: needinfo?(miket)
Product: Firefox for Android → Tech Evangelism
Summary: Web Page will not display → DeKlab, GA county school locator will not display application
Version: 39 Branch → Firefox 39
Giovanni, do you happen to work on the site? 

If so, there's a utf8 byte order mark at the beginning of the LoadingShelter.html template that is causing the app to throw in Firefox:

http GET http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/dijit/templates/LoadingShelter.html
HTTP/1.1 200 OK
Accept-Ranges: bytes
Connection: Keep-Alive
Content-Encoding: gzip
Content-Length: 135
Content-Type: text/html; charset=ISO-8859-1
Date: Mon, 11 Jan 2016 20:56:40 GMT
ETag: "45de63-b1-51a7861289300"
Keep-Alive: timeout=3, max=100
Last-Modified: Thu, 09 Jul 2015 22:00:12 GMT
Server: Apache/2.2.15 (Unix) mod_perl/2.0.4 Perl/v5.8.8
Vary: Accept-Encoding

<div>
  <div class="loading-container">
      <img data-dojo-attach-point="loadingImg"/>
      <p data-dojo-attach-point="textNode">${nls.loading}...</p>
  </div>
</div>

Note the "" -- it's being served as ISO-8859-1. Not sure why Chrome is happy with that, but I would suggest removing the BOM so Dojo doesn't throw Error: Invalid template.
Flags: needinfo?(miket) → needinfo?(gio.marrero87)
needinfo Henri who might be interested by encoding/parsing bugs.
Flags: needinfo?(hsivonen)
Giovanni indeed seems to be working there.
https://www.linkedin.com/in/giovanni-marrero-a6315923

So I'm switching the bug to contacted.

Giovanni, Any progress?
Whiteboard: [sitewait] [http] [BOM]
Sorry for the late reply. I have been super busy at work. I have found out that the exact same files will work and display on firefox when using my local ISS machine. So I'm assuming there is something blocking the website on the school's server. Which is sadly out of my control since I'm not with the IT department.
Flags: needinfo?(gio.marrero87)
(In reply to Mike Taylor [:miketaylr] from comment #6)
> Giovanni, do you happen to work on the site? 
> 
> If so, there's a utf8 byte order mark at the beginning of the
> LoadingShelter.html template that is causing the app to throw in Firefox:
> 
> http GET
> http://www.dekalb.k12.ga.us/www/school-locator/jimu.js/dijit/templates/
> LoadingShelter.html
> HTTP/1.1 200 OK
> Accept-Ranges: bytes
> Connection: Keep-Alive
> Content-Encoding: gzip
> Content-Length: 135
> Content-Type: text/html; charset=ISO-8859-1
> Date: Mon, 11 Jan 2016 20:56:40 GMT
> ETag: "45de63-b1-51a7861289300"
> Keep-Alive: timeout=3, max=100
> Last-Modified: Thu, 09 Jul 2015 22:00:12 GMT
> Server: Apache/2.2.15 (Unix) mod_perl/2.0.4 Perl/v5.8.8
> Vary: Accept-Encoding
> 
> <div>
>   <div class="loading-container">
>       <img data-dojo-attach-point="loadingImg"/>
>       <p data-dojo-attach-point="textNode">${nls.loading}...</p>
>   </div>
> </div>
> 
> Note the "" -- it's being served as ISO-8859-1. Not sure why Chrome is
> happy with that, but I would suggest removing the BOM so Dojo doesn't throw
> Error: Invalid template.

Hello,
Thank you for looking into the problem. I open the loadingshelter.html file to look for the weird question mark. Below is the script, which seems to be fine (no upside down question mark)

<div>
  <div class="loading-container">
      <img data-dojo-attach-point="loadingImg"/>
      <p data-dojo-attach-point="textNode">${nls.loading}...</p>
  </div>
</div>
Giovanni, 

The BOM (Byte Order Mark) is not always visible in all editors. 
http://stackoverflow.com/questions/2223882/whats-different-between-utf-8-and-utf-8-without-bom

Be sure to save the file as ISO-8859-1 before putting it on the server.
When saving the file, you might want to "save as UTF-8 without BOM"
Or change the configuration of the server so that it is served as UTF-8.


Currently the file and the server don't have the same encoding.
^_^ Thanks.
Flags: needinfo?(gio.marrero87)
Loading the URL times out for me, but looking at the minified JS code, it seems that the HTML template isn't being loaded via the HTML parser (neither through an iframe nor through the "document" mode of XHR). Instead, it looks like it's being loaded via XHR as non-HTML data.

It's unclear to me how exactly Dojo sets up XHR, so I'm not immediately sure if we should be decoding as windows-1252 thanks to the ISO-8859-1 label or if we should let the BOM override.

Anyway, if we have a bug, it's an XHR plain text handling bug and not a parser bug.

Keeping myself needinfoed so that I don't forget this.
Flags: needinfo?(miket)
OK, we have a bug. https://xhr.spec.whatwg.org/#text-response invokes https://encoding.spec.whatwg.org/#decode which sniffs for BOM. However, our XHR code doesn't. Duplicate of bug 1070763. Not marking as such in case you wish to pursue evangelism anyway.
Flags: needinfo?(hsivonen)
Thanks a lot Henri.
Giovanni, that would be very cool if you could fix this on your side too.
(Clearing the needinfo that I set but then edited out the question for.)
Flags: needinfo?(miket)
Status: REOPENED → RESOLVED
Closed: 9 years ago7 years ago
Resolution: --- → DUPLICATE
Product: Tech Evangelism → Web Compatibility
Component: Mobile → Site Reports
You need to log in before you can comment on or make changes to this bug.