【问题标题】:Loading Facebook in a WebView, behaves weird在 WebView 中加载 Facebook,行为很奇怪
【发布时间】:2013-09-11 21:14:46
【问题描述】:

我正在我的 WebView 中加载 m.facebook.com,不确定这有多重要,但 webview 位于 ViewPager 的容器中。 p>

每次我启动应用程序并加载网址时,我都会看到以下结果之一:

您实际期望的:

但另一个相当令人不安:

为什么会有这两种行为?

XML:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/Site_WebView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

WebView 的设置代码:

webView.loadUrl(item.getUrl());
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
settings.setUserAgentString("My User Agent - Android");
webView.setWebChromeClient(new WebChromeClient() {});
webView.setWebViewClient(new WebViewClient() {});

我对适配器中的xml进行膨胀,并将其添加到容器中......

【问题讨论】:

  • 您可以发布生成您所看到内容的代码吗?以及控制布局的任何 XML?
  • 这真的没什么……对我来说,这就像一个简单的布局膨胀,把它放在一个浏览器上,然后它会发生,一两次正常,其他时候,奇怪的行为: /
  • 我没有接触任何 CSS,也没有注入任何类型的 Javascript,我唯一能想到的是页面布局无效器和页面渲染器线程之间的竞争条件,而我没有不知道为什么!
  • 我添加了一个检查并使用 Javascript 打印了窗口宽度,它说明了正确的大小 800x1080...所以我一直想知道到底发生了什么?
  • 你能发个sscce吗?我也想看看这个。

标签: android android-webview android-viewpager webviewclient


【解决方案1】:

在这里进行所有测试后,我发现它是“用户代理”。 m.facebook.com.br 将 html / css 代码更改为为其花费的用户代理。

删除代码中的这一行: settings.setUserAgentString ("我的代理 - Android");

一切都会好起来的。

【讨论】:

  • 谢谢你的回答......我需要扩展这个问题,因为这不是我在 Facebook 和移动应用程序中看到的唯一奇怪的行为......我很快就会这样做...... .
【解决方案2】:

在了解这不是 ViewPager 和抽屉之间的竞争条件后,我深入研究了页面,发现 Facebook 根据一些我不关心的参数自定义页面宽度......

后来我在 Chrome 上安装了用户代理切换器扩展,并且能够使用我的自定义用户代理重现它。

我没想到用户代理会对页面产生这样的影响......

但见鬼,我以前错了十亿次!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-18
    • 1970-01-01
    • 2011-10-28
    • 1970-01-01
    • 1970-01-01
    • 2016-08-30
    相关资源
    最近更新 更多