OK, I've taken a look at the situation, and I think I know what it is (but it is difficult to diagnose with the minimized files and no ability to change anything for testing purposes). Chrome is complaining about not being able to get the "config" property of a variable that is null, but it is not clear exactly which instance of something.config is the problem. I suspect it is the one at line 28 of the ext.mathjax.enabler.js. If I'm not mistaken, this is code from Nageh's extension, but I'm not sure exactly what he is trying to accomplish, here. I think it is trying to overcome a problem he had with user-defined macros being overridden by macros in extensions, but this code will not do that properly. He is linking to the signal that occurs when the extensions in the extensions array have been loaded, and sets TEX = MathJax.InputJax.TeX, but this signal can occur before the jax are loaded (see below).
In any case, this code will not do what Nageh intends, and so should be removed. See if that helps.
I'm also a little concerned about your putting MathJax.js together with all the other files, as I think that may interfere with the timing as well. Here's why: at the bottom of MathJax.js is the initial MathJax queue that handles the startup process. Part of that is loading the configuration file, loading the needed jax and extensions, and so on. This queue is put in action at the time that part of the code runs, and so MathJax will start to take these actions right away. Normally, that involves loading the configuration, extensions, jax and so on, which block the queue until those actions occur, and so the loading of the configuration, jax and extensions occurs before the rest of the queue runs. But in your case, there is no configuration file, so nothing to load. Similarly, the jax array is empty and no extensions have been specified at the time the queue runs, so there is nothing to do there, either, and MathJax goes through all those steps doing nothing, firing its signals that those actions have occurred. Since the loading is occurring in the page onload handler (if I read things correctly), MathJax will also do its initial typeset pass (but will do nothing since no jax and no preprocessors are loaded yet). That means MathJax will have finished its queue at the time that portion of the code is run, which is BEFORE the rest of large file (containing MathJax.js and all the other files) runs, so those things occur AFTER MathJax thinks it has already completed its entire setup process. That means the timing will be off, and signals will be made that are misleading.
In your case, since you set up a tex/x-mathjax-config block that contains the one command mathJax.Config(), that configuration DOES occur at the proper time, and so the changes you make there and the signal hook are properly in place. That means that the signal hook will run when the "End Extensions" signal occurs during the initial processing of the MathJax queue, which occurs before the code for the TeX input jax is available. The would account for TEX being null and TEX.config causing an error.
You may ask why it works for the other browsers. Well, there is a second reason the queue can be paused, and that is during the processing of stylesheets. Some browsers require a delay in order to process style sheets before they are made available, and MathJax waits for that to occur, suspending the queue. For those that do (e.g., Safari), the queue will be delayed between the configuration step and the loading of extensions and jax, and so the remainder of the big file will run before MathJax resumes the queue. That would account for Safari and the other browsers that work. If I remember correctly, IE doesn't need the delay, and it appears that Chrome doesn't either, which accounts for their failure.
If you eliminate lines 26 through 40, you may be able to get away with having everything all in one file like this, but I wouldn't guarantee it, and I'm a little concerned about it.
I would recommend that you only include MathJax.js in the ext.mathjax.enabler.js and allow MathJax to load its components in its usual way (it will be loading other pieces itself anyway). The only difficulty is getting to set the root property before it needs to use that. Here is a suggested approach (untested):
root: mediaWiki.config.get('wgExtensionAssetsPath') + '/Math/modules/MathJax',
config: ["TeX-AMS-texvc.js"];
"v1.0-compatible": false,
styles: { ".mtext": { "font-family": "sans-serif ! important", "font-size": "80%" } },
menuSettings: { zoom: "click" },
"HTML-CSS": { imageFont: null, availableFonts: ["TeX"] }
and then make a file names TeX-AMS-texvc.js in the config directory that includes
MathJax.Hub.Config({
extensions: ["tex2jax.js","texvc.js","MathEvents.js","MathZoom.js","MathMenu.js","toMathML.js"];
jax: ["input/TeX","output/HTML-CSS"];
TeX: {extensions: ["noErrors.js","noUndefined.js","AMSmath.js","AMSsymbols.js"]}
});
MathJax.Hub.loadComplete("[MathJax]/config/TeX-AMS-texvc_HTML.js");
which we can make into a minified combined configuration file later. This will require a second file to be loaded, but it should be more reliable. We might want to talk more about what should be included in the combined version of this file.
There are some other issues that I will write about later, but I think this is the one that is causing the failure for Chrome and IE.
Let me know if that works.
Davide