某些网站具有响应式CSS,可为不同的屏幕设置不同的网站。当从浏览器给出不同大小的数据时,其他站点似乎提供不同的数据。当我使用手机浏览器请求桌面版网站时,除了更改用户代理(已在Codename One - BrowserComponent: custom user-agent中描述)之外,我的手机还会更改它发送到服务器并用于显示的明显浏览器窗口大小网页。
如何更改Codenameone浏览器组件的明显窗口大小?
我认为如果有一个我可以在浏览器组件上设置的有效属性列表,可能会出现一个后续问题。
答案 0 :(得分:2)
正如Shai(codenameone的领主)指出的那样,没有办法本地做到这一点。
但是,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是否正在尝试获取桌面版本,您可能会发现其他元标记,您可以将其与我未曾预料到的其他行为混在一起。
希望这可以帮助其他人解决同样的问题。这是我能找到的最好的解决方法。
答案 1 :(得分:0)
我认为如果没有实际使网络视图比屏幕更大,那么本机方法就没有办法。我认为本机浏览器中对桌面站点的支持在其中有一些特殊的案例代码,因为它们直接与底层引擎一起使用。