如何获得可见浏览器区域的高度和宽度

markus_ja

如何获取浏览器区域的高度和宽度?

无论手机是否旋转浏览器视图,我都希望始终以横向模式显示一种形式。

如果浏览器处于纵向位置,我想旋转表格(TForm.Angel:= 90)。以强制风景模式。

更新
这是一张图片,结果应为:在此处输入图片说明

我找到了解决方案,但我对此并不满意。旋转视图很容易,但是原点不在中心,因此我必须手动对其进行校正,而且我不明白为什么需要这种变换。
这是代码:

procedure TForm1.ForceLandscape(aEnabled: Boolean);
var
  browserWidth, browserHeight: Integer;
  isLandscapeMode: Boolean;
begin
  browserHeight := Application.Display.ClientHeight;  //BrowserAPI.Window.innerHeight;
  browserWidth := Application.Display.ClientWidth;    //BrowserAPI.Window.innerWidth;

  isLandscapeMode := browserHeight > browserWidth;

  if aEnabled and isLandscapeMode then
  begin
    Angle := 90;

    Height := browserWidth;
    Width := browserHeight;
  end
  else
  begin
    Angle := 0;

    Height := browserHeight;
    Width := browserWidth;
  end;
end;

procedure TForm1.InitializeForm;
begin
  inherited;
  // this is a good place to initialize components

  //Need to put a transform.orign for form rotation (Angle)
  var x := trunc(Application.Display.ClientWidth / 2);
  var myStyle := TInteger.ToPxStr(x) + ' ' + TInteger.ToPxStr(x);
  w3_setStyle(Handle, w3_CSSPrefix('TransformOrigin'), myStyle);

end;
约恩·E·安格特维特

The simplest way would be to use the main form's With and Height.

Create a new "Visual project" and add an EditBox to the form.
Put this code into the "Resize" method:

Edit1.Text := Format('%d x %d', [Self.Width, Self.Height]);

If you, however, want to keep the main-form at a fixed size, you would need to read some other properties.

Self.Width := 250;
Self.Height := 250;

There are several ways to get these dimensions. Both the "window" and "document" DOM-element have some properties you can use:

  • window.innerWidth
  • document.documentElement.clientWidth
  • document.body.clientWidth

In Smart you can access these from the Application object:
(Add two more edit-boxes...)

W3EditBox2.Text := Format('%d x %d', [Application.Document.ClientWidth, Application.Document.ClientHeight]);
W3EditBox3.Text := Format('%d x %d', [Application.Display.ClientWidth, Application.Display.ClientHeight]);

It seems to be a bug in Application.Document.ClientHeight as it always returns 0...


请记住,正在运行的代码是JavaScript。您可以在网上找到许多有用的信息。
通过一个asm部分将这些JS代码片段转换为Smart Pascal非常容易

例如:

var
  w,h: Integer;
begin

  //Pure JavaScript below.
  //The @-prefix maps the variable to a SmartPascal declared variable

  asm 
    @w = window.innerWidth;
    @h = window.innerHeight;
  end;

  W3EditBox4.Text := Format('%d x %d', [w, h]);

end; 

另一个技巧是声明一个Variant变量。
一个Variant变量可以保存整个JavaScript对象,并启用“后期绑定”对象的成员-ish访问:

var  
  v: Variant;
begin

  //Grab the whole "document" element from the DOM
  asm
    @v = document;
  end;

  //Access all "document" members directly via the "v"-variable 
  W3EditBox5.Text := Format('%d x %d', [v.documentElement.clientWidth, v.documentElement.clientHeight]);

end;

上面的代码片段的屏幕截图:

在此处输入图片说明

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何让div继承浏览器窗口的宽度和高度

来自分类Dev

如何在浏览器窗口的可见部分周围获得偏移边框

来自分类Dev

如何使PIXI渲染器适合浏览器的宽度和高度?

来自分类Dev

如何使PIXI渲染器适合浏览器的宽度和高度?

来自分类Dev

如何防止浏览器对 img 的绘制可见?

来自分类Dev

弹出div以填充整个浏览器的宽度和高度

来自分类Dev

如何在移动浏览器的视口宽度和高度上居中放置元素?

来自分类Dev

如何使元素(而不是仅窗口)(浏览器)的页面和文档的宽度和高度均为100%?

来自分类Dev

如何使div填充浏览器窗口的宽度和高度并且不拉伸图像

来自分类Dev

如何使元素(而不是仅窗口)(浏览器)的页面和文档的宽度和高度均为100%?

来自分类Dev

可见的浏览器回流

来自分类Dev

如何根据浏览器高度/宽度获取应用程序宽度/高度

来自分类Dev

如何制作一个动态的画布/网格/行/列,以适应浏览器的宽度和高度,同时保持宽高比?

来自分类Dev

设置电子邮件和浏览器的tr和td宽度和高度

来自分类Dev

是否根据浏览器的高度和宽度保持宽高比和字体大小?

来自分类Dev

在浏览器窗口中可见时如何添加类

来自分类Dev

如何使CSS仅对Android手机UC浏览器可见

来自分类Dev

在OSX上,如何一次重新加载所有可见的浏览器窗口?

来自分类Dev

如何使CSS仅对Android手机UC浏览器可见

来自分类Dev

如何过滤AEM Granite UI路径浏览器中可见的页面?

来自分类Dev

{高度:100%;位置:绝对;}获得浏览器高度?

来自分类Dev

根据浏览器的宽度和高度缩放画布内的图像

来自分类Dev

根据浏览器窗口的宽度和高度调整div样式的大小-jQuery

来自分类Dev

图片的高度和宽度设置为100%,无法在Android浏览器中正确调整大小。

来自分类Dev

自动将画布调整为浏览器宽度和高度

来自分类Dev

如何使元素的高度覆盖范围超过窗口的可见区域?

来自分类Dev

javascript代码在浏览器上可见

来自分类Dev

在浏览器的“检查元素”中可见的IP地址

来自分类Dev

某些SVG符号在浏览器中不可见

Related 相关文章

  1. 1

    如何让div继承浏览器窗口的宽度和高度

  2. 2

    如何在浏览器窗口的可见部分周围获得偏移边框

  3. 3

    如何使PIXI渲染器适合浏览器的宽度和高度?

  4. 4

    如何使PIXI渲染器适合浏览器的宽度和高度?

  5. 5

    如何防止浏览器对 img 的绘制可见?

  6. 6

    弹出div以填充整个浏览器的宽度和高度

  7. 7

    如何在移动浏览器的视口宽度和高度上居中放置元素?

  8. 8

    如何使元素(而不是仅窗口)(浏览器)的页面和文档的宽度和高度均为100%?

  9. 9

    如何使div填充浏览器窗口的宽度和高度并且不拉伸图像

  10. 10

    如何使元素(而不是仅窗口)(浏览器)的页面和文档的宽度和高度均为100%?

  11. 11

    可见的浏览器回流

  12. 12

    如何根据浏览器高度/宽度获取应用程序宽度/高度

  13. 13

    如何制作一个动态的画布/网格/行/列,以适应浏览器的宽度和高度,同时保持宽高比?

  14. 14

    设置电子邮件和浏览器的tr和td宽度和高度

  15. 15

    是否根据浏览器的高度和宽度保持宽高比和字体大小?

  16. 16

    在浏览器窗口中可见时如何添加类

  17. 17

    如何使CSS仅对Android手机UC浏览器可见

  18. 18

    在OSX上,如何一次重新加载所有可见的浏览器窗口?

  19. 19

    如何使CSS仅对Android手机UC浏览器可见

  20. 20

    如何过滤AEM Granite UI路径浏览器中可见的页面?

  21. 21

    {高度:100%;位置:绝对;}获得浏览器高度?

  22. 22

    根据浏览器的宽度和高度缩放画布内的图像

  23. 23

    根据浏览器窗口的宽度和高度调整div样式的大小-jQuery

  24. 24

    图片的高度和宽度设置为100%,无法在Android浏览器中正确调整大小。

  25. 25

    自动将画布调整为浏览器宽度和高度

  26. 26

    如何使元素的高度覆盖范围超过窗口的可见区域?

  27. 27

    javascript代码在浏览器上可见

  28. 28

    在浏览器的“检查元素”中可见的IP地址

  29. 29

    某些SVG符号在浏览器中不可见

热门标签

归档