-
Bug
-
Resolution: Fixed
-
Normal
-
8.6.0
-
None
-
Security Level: Jimmy
-
None
-
reproduced on Chrome Version 70.0.3538.77 (Official Build) (64-bit), window 10
-
ZK 8.6.1 S1
-
None
Steps to Reproduce
run fiddle in plain page mode (run, then click the window button on the top right corner)
http://zkfiddle.org/sample/1huv39q/1-ZK-chrome-zoom-vflex
open developper tools;
set zoom to 125%;
reload the window;
Current Result
Uncaught RangeError: Maximum call stack size exceeded at setHghForVflexChild (zk.wpd:27657) at Object.fixFlex (zk.wpd:27665) at Object.fixFlex (zk.wpd:27704) at Object.fixFlex (zk.wpd:27704) at Object.fixFlex (zk.wpd:27704) at Object.fixFlex (zk.wpd:27704) at Object.fixFlex (zk.wpd:27704) at Object.fixFlex (zk.wpd:27704) at Object.fixFlex (zk.wpd:27704) at Object.fixFlex (zk.wpd:27704)
Expected Result
not that
Debug Info
To trigger this error, the following conditions are required:
A container (div) with the overflow auto style
Multiple childs in this div, one of them using flexing, the others having a non-integer height in pixels that adds to at least 1px more than their rounded individual height do. For example, considering the set of values:
will add to 198.4 and round to 198, but the sum of their rounded values
{101,99,99}will be 199.
This will cause the flexing calculator to oscillate between two states
{100.6, 99.4, 1, 99.4}with a scrollbar and
{100.6,99.4, 0, 99.4} with no scollbar.
As an extra complication, if Chome have a scrollbar visible on page body and on the container div at the same time and the browser have a non-100% zoom level, the rounded value returned by element.offsetHeight of the last div in the container is rounded up instead of down. This means that with both scrollbar visible, the approximation of the 2nd state is
, which causes the flex calculator to assign a height of 0 to the flexing object.
Root Cause
chrome domNode.offsetHeight rounding is not well determined with zoom 125% and subpixel sizes