【问题标题】:How can I set the BrowserComponent Browser Window Size in Codenameone如何在 Codenameone 中设置 BrowserComponent 浏览器窗口大小
【发布时间】:2018-03-11 23:27:19
【问题描述】:

某些网站具有响应式 CSS,可针对较小的屏幕以不同方式布局网站。当从浏览器给定不同大小的数据时,其他网站似乎提供不同的数据。当我使用手机浏览器请求桌面站点时,除了更改用户代理(已在 Codename One - BrowserComponent: custom user-agent 中描述)之外,我的手机还会更改它发送到服务器并用于显示网页的明显浏览器窗口大小.

如何更改 Codenameone 浏览器组件的外观窗口大小?

我认为后续问题可能是我可以在浏览器组件上设置的有效属性列表。

【问题讨论】:

    标签: java browser codenameone


    【解决方案1】:

    正如 Shai(代号之主)所指出的,没有办法在本地做到这一点。

    不过,CodenameOne BrowserComponents 允许您非常轻松地将 javascript 注入页面,您可以使用它来修改网页中限制缩放和限制视口大小的部分。

    当然,这仍然可能与通常的桌面网站有所不同,但如果您关心的主要问题是受限缩放和受限视口大小,您可以使用以下解决方法。

    在某处定义 javascript:

        public static final String VIEWPORT_SCRIPT = "viewport = document.querySelector(\"meta[name=viewport]\");\r\n" + 
                "viewport.setAttribute('content', 'width=1920px, height=1920px, initial-scale=0.25, maximum-scale=4.0, user-scalable=1');";
    

    当你初始化你的 BrowserComponent 时,给它一个 ActionListener 在加载时运行这个脚本,如下所示:

        pageBrowser = new BrowserComponent();
    
        pageBrowser.addWebEventListener(BrowserComponent.onLoad, (e) -> {
            pageBrowser.execute(VIEWPORT_SCRIPT);
        });
    

    您显然可以使用您在 javascript 中设置的宽度和高度,以及初始缩放系数和缩放限制。

    javascript 的机制相对简单,它们搜索包含视口特征的元标记,并将内容设置为其他内容。如果您检查您尝试获取桌面版本的网站的 html,您可能会发现其他元标记,您可以使用这些标记来处理我没有预料到的其他行为。

    希望这可以帮助遇到同样问题的其他人。这是我能找到的最好的解决方法。

    【讨论】:

      【解决方案2】:

      我认为没有办法在不使 Web 视图物理上大于屏幕的情况下实现这一点。我认为原生浏览器对桌面站点的支持在其中包含一些特殊情况代码,因为它们直接与底层引擎一起使用。

      【讨论】:

      • 那是相当不幸的。我想我实际上已经找到了一种解决方法,而且我听说自我回答的问题很好,所以我会把它放在答案中。感谢您的帮助!
      猜你喜欢
      • 2012-11-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-30
      • 2016-09-07
      • 2011-07-17
      • 2012-03-19
      • 1970-01-01
      相关资源
      最近更新 更多