On post revisions that don't change the post's rendered output, such as addition/removal/edits of HTML comments, changing inline links to footnote links, changing image descriptions, etc., the toggle to change to or from the Side-by-side Markdown view doesn't work properly.
Some facts for context:
- When a revision history page is loaded, the type of diff view that gets shown depends on what type the user selected when they last loaded a revision history page, or Inline if they never made a choice. Using the toggle to change the type (normally) will also save the selection server-side so future history loads load with that type.
- Edits that don't make a change to a post's rendered output show up as blank revisions in the Inline and Side-by-side [rendered output] views.
With those out of the way, let me describe the exact behavior:
- If the post's pre-loaded diff view type is Side-by-side Markdown, the edit properly shows up. When changing from that to Inline or Side-by-side, the diff view fails to load - it gets stuck with a loading circle within each button. However, the user's selection is saved server-side, and refreshing the page will show the diff in the view that the user selected. (This only applies to the user's first selection - if the user, say, selected Side-by-side, then after seeing the loading circle selected Inline, then on the next page load it will show as Side-by-side.)
- If the post's pre-loaded diff view is Inline or Side-by-side, attempting to change to Side-by-side Markdown outright fails with no loading screen. The user's selection is not saved server-side, and in order to view the Markdown change it is necessary to change the server-side selection another way (through a different revision of the same post or another post's history page entirely), then refresh the page.
As Makyen commented, in the first case, this is due to the server not returning the required data, which causes SE's code to get into an infinite loop requesting data from the server, which causes excessive load and may lead to IP blocks.
In both cases, I checked for errors in the JS console, but there weren't any.
Can this please be fixed to work properly? I think it's getting confused with the blank rendered output diffs.