无法读取未定义的属性“ scrollView”

时间:2019-02-26 10:57:00

标签: javascript delphi delphi-10.2-tokyo

使用uniGUI框架执行JS代码时出现此错误。

  

无法读取未定义的属性“ scrollView”

此过程中使用此属性。

procedure SetScrollboxSize(AFramem: TWPUnimFrame; ASize: Integer);
begin
  if ASize > AFramem.ScrollBoxm.ClientHeight then
    UniSession.JSCode(AFramem.Scrollboxm.JSName
                      + '.scrollableBehavior.scrollView.getScroller().maxPosition.y = '
                      + (ASize - AFramem.Scrollboxm.ClientHeight).ToString + ';')
  else
    UniSession.JSCode(AFramem.Scrollboxm.JSName
                      + '.scrollableBehavior.scrollView.getScroller().maxPosition.y = 0;');
end;

您能给我一个提示,从哪里搜索或从哪里开始修复此错误?

1 个答案:

答案 0 :(得分:0)

没有实际的源代码很难再现错误,但是"Cannot read property '...' of undefined"是典型的JavaScript错误。我猜想TWPUnimFrame是某种用于显示Web内容的组件。

在您的情况下,您需要确保分配了AFramem.Scrollboxm.JSName + '.scrollableBehavior'变量。您可以尝试使用console.log()输出一些信息并调试JavaScript代码:

procedure SetScrollboxSize(AFramem: TWPUnimFrame; ASize: Integer);
var
    code: string;
begin
    code := 'console.log(' + AFramem.Scrollboxm.JSName + 'scrollableBehavior.scrollView); ';
    if ASize > AFramem.ScrollBoxm.ClientHeight then
        code := code +
            AFramem.Scrollboxm.JSName + 
            '.scrollableBehavior.scrollView.getScroller().maxPosition.y = ' +
            (ASize - AFramem.Scrollboxm.ClientHeight).ToString + ';'
    else
        code := code +
            AFramem.Scrollboxm.JSName +
            '.scrollableBehavior.scrollView.getScroller().maxPosition.y = 0;';
    UniSession.JSCode(code);
end;