-
-
Notifications
You must be signed in to change notification settings - Fork 1.9k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Order-independent script tags (MathJax & locales) #4146
Comments
This problem has gotten worse with the async loading in dash 1.5... |
I am trying to reproduce the MathJax part of the issue described here. In the following Codepen, even though MathJax is loaded after plotly.js, the rendering of equations works. What am I missing? |
Huh OK, maybe that's a result of #2994? At this point I've lost track of why in #2994 we couldn't just always configure MathJax immediately before using it... if we could do that, and get rid of the attempt to configure it during initial script execution it would be more obvious that order is irrelevant. But it doesn't look as though anyone actually tried flipping MathJax to after plotly.js in the course of plotly/dash#880, so if we can simply convince ourselves that this is OK, and remove the comment about script ordering in the plotly.js docs, then I'm happy with the MathJax part. |
Thanks @alexcjohnson for the reply!
@jonmmease can you enlighten me? Is it possible to always configure Mathajx before using it and make everything order independent? |
Here's what I recall:
I haven't followed the Dash issues, but it might make sense for Dash to always set this Hope that helps! |
Spurred by plotly/dash#880 as it's annoying to have to control script tag ordering in dash.
Currently the docs say MathJax must be loaded before plotly.js, and locales must be loaded after. This is because plotly.js looks for
typeof MathJax !== 'undefined'
during script execution, and if it finds MathJax it configures it. Whereas the opposite happens with locales: the script immediately callsPlotly.register
, so it assumes that thePlotly
object exists.For MathJax we could simply defer this configuration to the first
Plotly.plot
call - and set some flag so we don't do it again.For locales it's a little more complicated, we would have to do something like call
Plotly.register
if it exists, otherwise stash the locale in some global likewindow.PlotlyLocales
(in a way that's compatible with multiple locale scripts), and then during the plotly.js script execution grab these and register them. At first I was thinking of deferring this to the firstPlotly.plot
call along with the MathJax config, and that may still work, I just worry people may want to inspect the available locales and would be confused that they don't see the right ones.The text was updated successfully, but these errors were encountered: