In SmartClient 6.5.1, under certain circumstances, it is possible to get an "Infinite Recursion" JavaScript error if a prompt has been shown via isc.showPrompt() and the user presses the Tab key repeatedly.
Apply this patch to resolve the issue:
Apply this patch to resolve the issue:
Code:
//----------------------------------------------------------------------------
// Isomorphic SmartClient 6.5.1 patch
// Purpose: Prevent "Infinite Recursion" script error with prompt and Tab keypress
//
// Applies to SmartClient 6.5.1 build only
//----------------------------------------------------------------------------
if (window.isc && isc.version.startsWith("6.5.1/") ){
isc.Canvas.addProperties({
$kf : function (_1, _2) {
var _3 = this;
do {
_3 = _1 ? _3.$vy() : _3.$vz();
} while (_3 &&
(isc.EH.targetIsMasked(_3, _2) ||
_3.isDisabled() ||
!_3.isDrawn() || !_3.isVisible() || !_3.$kk()));
if (_3) {
this.logInfo("focusInNextTabElement() shifting focus to:" + _3, "syntheticTabIndex");
_3.focusAtEnd(_1);
} else if (_1) {
this.logInfo("focusInNextTabElement() shifting focus to first widget", "syntheticTabIndex");
if (isc.EH.$kj == null ||
(isc.EH.$kj == this &&
(this.isDisabled() || !this.isDrawn() ||
!this.isVisible() || !this.$kk() || this.isMasked(_2))))
{
return;
}
isc.EH.$kh(_2);
} else {
this.logInfo("focusInNextTabElement() shifting focus to last widget", "syntheticTabIndex");
if (isc.EH.$kl == null ||
(isc.EH.$kj == this &&
(this.isDisabled() || !this.isDrawn() ||
!this.isVisible() || !this.$kk() || this.isMasked(_2))))
{
return;
}
isc.EH.$kg(_2);
}
}
});
} else if (window.isc) {
isc.Log.logWarn("Patch for SmartClient 6.5.1 build included in this application. " +
"You are currently running SmartClient verion '"+ isc.version +
"'. This patch is not compatible with this build and will have no effect. " +
"It should be removed from your application source.");
}