3

I'm just looking for any pointers to help me narrow my debugging.

My site is working fine without using a CDN. If I use a CDN (Edgecast, but also another one I tested on), then my Google maps embedded in the pages don't show up in Chrome and Firefox, but do show up fine in Safari (all latest versions, cannot test it on IE).

Switching off the CDN setting in my application (social engine) corrects it, so it really is CDN-related.

If I save the html source on my local machine and view it in a browser locally, then it works fine as well.

I have another feature of my site, a JS slideshow, that is not working as well, following the same pattern. The only thing that changes when I switch on and off the CDN are the locations of JS, CSS and image files.

I've tried many things, do not see any errors in the console, and I'm just puzzled by the behavior. If anyone has any pointers to further investigate, based on the patterns descibed, I would be much grateful.

If you want to have a look at a page working fine in Safari but not in Chrome/Firefox, you can have a look at http://healthylivingtribes.com/paleo-primal-resource/ovvio . The "map" tab should display a Google map.

Many thanks in advance for your help.

Best, - Julien

Julien
  • 31
  • 2
  • In Safari, I, too, see the map, but in Chrome, I get the following javascript error: `Uncaught TypeError: Array.prototype.forEach called on null or undefined` at `mootools-1.2.5-core-nc.js:81`. – John Pick Feb 26 '12 at 05:23

3 Answers3

2

I got the same error:

Uncaught TypeError: Array.prototype.forEach called on null or undefined at mootools-1.2.5-core-nc.js:81

and found a solution that works for me:

In the file mootools-1.2.5-core-nc.js (or wherever else your code resides, seems to work for older versions too) replace the following line (#2901 in mootools-1.2.5-core-nc.js):

var rules = sheet.rules || sheet.cssRules;

by this line:

var rules = sheet.rules || sheet.cssRules || [];


Apparently neither sheet.rules nor sheet.cssRules are necessarily properly initialized, so simply assigning an empty array as a third alternative to the variable rules fixes it.

For some reason Chrome seems to be more sensitive (or accurate) here than the usual suspects... ;)


Accordingly, if you are using a compressed version, replace this line (well, compressed line):

var F=E.rules||E.cssRules;

by this:

var F=E.rules||E.cssRules||[];


Since in the compressed versions internal variables are renamed to shorter values, your variable might not actually be named F as in my case, but you get the idea :)


EDIT: As this seems to be an actual bug, I reported it to the MooTools Core bugtracker, so maybe they will fix it in the official releases (https://github.com/mootools/mootools-core/issues/2345).

mookoo
  • 21
  • 3
0

Well, I haven't found the answer but it is related to the another JS which prevents Google maps to appear.

Still no clue about the difference between Safari and Chrome, but I've now isolated the socialengine plugin which causes this.

It's CDN-related for sure though, and still works perfectly fine in Safari, so if anyone has any hypothesis, I'll still be interested in hearing them :-)

Julien
  • 31
  • 2
0

I got this error too and tried upgrading mootools from 1.2.5 to 1.4.5 - but the error changed to:

Uncaught ReferenceError: Asset is not defined

I then used the Mootools builder here: http://mootools.net/more/#Assets (Select ALL, Include compatibility, No compression)

... and the slideshow is now working.