Hi,
we are facing a pretty strange problem when running our SmartGWT aplication on IE11 (other IE versions work fine).
IE11 goes into never ending cycles when working with our SmartGWT application.
It happens very randomly and we have no steps to reproduce it. The complexity of our application makes it impossible to post a sample of the code.
Most often it happens when users work with the application, then they minimize the browser window and after some time they restore it and try to continue working.
The never ending cycle is always something like this:
After several experiments we found a problematic place in the BaseWidget.isCreated() native method:
This method returns false for existing Canvas object.
The strange thing is that calling $wnd.isc.isA.Canvas(obj) returns true, but it is not '===' to true - last segment of the condition.
I have checked it by the following modification of the method directly in the compiled javascript:
In different test runs, the alert was shown after different number of passes. E.g. on the first run it passed 358 698 times, on the second run it passed 330 125 times …
Does anybody have any idea what could be the problem?
Svatya
Browser: IE11 (Windows7/8)
SmartGWT: v9.0p_2014-03-02/LGPL Development Only (built 2014-03-02)
GWT: 2.4
we are facing a pretty strange problem when running our SmartGWT aplication on IE11 (other IE versions work fine).
IE11 goes into never ending cycles when working with our SmartGWT application.
It happens very randomly and we have no steps to reproduce it. The complexity of our application makes it impossible to post a sample of the code.
Most often it happens when users work with the application, then they minimize the browser window and after some time they restore it and try to continue working.
The never ending cycle is always something like this:
Code:
onVisibilityChanged_5 $isDrawn_1 getOrCreateJsObj_2 $getOrCreateJsObj_1 create_25 doInit getOrCreateJsObj_2 $getOrCreateJsObj_1 create_25 ...
Code:
public native boolean isCreated()/*-{ var id = this.@com.smartgwt.client.widgets.BaseWidget::id; var obj; return id != null && (obj = $wnd.window[id]) != null && obj !== undefined && $wnd.isc.isA.Canvas(obj) === true; }-*/;
This method returns false for existing Canvas object.
The strange thing is that calling $wnd.isc.isA.Canvas(obj) returns true, but it is not '===' to true - last segment of the condition.
I have checked it by the following modification of the method directly in the compiled javascript:
Code:
var trueCheckCount = 0; function $isCreated_2(this$static){ var id = this$static.id_0, returnTemp, stackIndex; $stack_0[stackIndex = ++$stackDepth_0] = $isCreated_2; var obj; returnTemp = id != null && (obj = $wnd.window[id]) != null && obj !== undefined && $wnd.isc.isA.Canvas(obj) == true; if (returnTemp) { if (!(id != null && (obj = $wnd.window[id]) != null && obj !== undefined && $wnd.isc.isA.Canvas(obj) === true)) { alert("TRUE != TRUE (was OK: " + trueCheckCount + "x before)"); } else { trueCheckCount++; } } $stackDepth_0 = stackIndex - 1; return returnTemp; }
Does anybody have any idea what could be the problem?
Svatya
Browser: IE11 (Windows7/8)
SmartGWT: v9.0p_2014-03-02/LGPL Development Only (built 2014-03-02)
GWT: 2.4
Comment