无法读取未定义的属性'scrollView'

问题描述 投票:0回答:1

使用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;

你能给我一个提示在哪里搜索或从哪里开始修复这个bug?

javascript delphi delphi-10.2-tokyo
1个回答
0
投票

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

在您的情况下,您需要确保分配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;
© www.soinside.com 2019 - 2024. All rights reserved.