当前位置: 首页 > 面试题库 >

呈现网页时onPageFinished无法正确触发

黄兴业
2023-03-14
问题内容

由于某种原因,onPageFinished在WebView完成加载之前就触发了-我不知道为什么…

public class WebViewClientTest extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    final WebView webview = (WebView) findViewById(R.id.webview);

    webview.setWebViewClient(new WebViewClient() {  
        @Override  
        public void onPageFinished(WebView view, String url) {
            super.onPageFinished(webview, url);
            webview.scrollTo(0, 500);
        }  
    });
    webview.loadUrl("http://www.google.co.uk/search?sourceid=chrome&ie=UTF-8&q=lala");

}
}

好的,看来这不是固定的。我认为加载页面时出现了竞争情况,但是无法获得可复制的行为。

我将网页的HTML内容存储在SQLite数据库中,以便离线查看。我使用以下命令将内容重新加载到WebView中:

webView.loadDataWithBaseURL("fake://fake.com/", htmlBody, "text/html", "utf-8", null);

似乎有时在加载WebView时,它会正确触发WebViewClient.onPageFinished()方法,而其他时候则不会。有时,它似乎在页面完成加载之前触发,产生contentHeight为0并忽略所有scrollTo调用。

有人对此有经验吗?


问题答案:

我有一个项目,该项目的代码仅在webview显示其内容之后才需要运行,并且像您一样,onPageFinished()无效。在Webview实际渲染页面之前,它触发得太快了。

相反,我必须使用“ PictureListener”,当Webview实际更新屏幕时会被触发。

您可以这样使用它:

mWebView.setPictureListener(new MyPictureListener());
//... and then later on....
class MyPictureListener implements PictureListener {

    @Override
    public void onNewPicture(WebView view, Picture arg1) {
      // put code here that needs to run when the page has finished loading and
      // a new "picture" is on the webview.      
    }    
}


 类似资料:
  • 问题内容: 我正在使用 JSF 2.1.8 实现Web应用程序,而 ui:include 标记存在问题。我有这个代码 该 navigationManagerSystem bean是JSF会话管理,在这一段代码首先呈现的,它应该是显示包括路径内容。如果我以这样的常量执行此操作,则包括这些工作,但是如果我将其放入变量中则不行,即使我已经看到变量在屏幕打印之前就保持了该值。我不知道它是否可以与包含/sy

  • 我正在尝试一个用户界面3.5,所有组件都工作正常,除了selectonemenu,它不能正确渲染。 它的文本字段在选择任何下拉字段时不显示。 我不能发布图片,因为我没有那么多的声誉 代码 屏幕拍摄 我怎样才能解决这个问题?

  • 我正在尝试使用Spring Security性和AngularJS设置默认SuccessUrl,但是成功登录后,html页面将加载到网络中,但没有显示。这是我的安全配置 但是,我仍然显示登录页面,而不是hello.jsp页面。登录的Angular服务: 有人知道为什么吗?

  • 问题内容: 这是我和我的朋友遇到的一个奇怪的问题。我们将站点定位在网络驱动器上,并尝试从那里打开它。所有其他浏览器都可以很好地呈现此页面,但是IE(顺便说一句,为什么它总是IE?:))无法理解内联语句。但是,如果我将文件复制到本地驱动器上没有问题,则IE会像其他浏览器一样呈现所有内容。我用IE7-9b进行了测试。 问题答案: 这听起来像是 一个 问题-IE在其中根据页面所在的位置切换呈现模式。 因

  • 我正在使用OpenApi和Swagger构建一些文档,但由于js错误,我无法对其进行测试。 我想定义一个将接受特定值的参数,因此我在属性中添加了。我在请求中定义参数,如下所示 开发工具

  • 在jasper reports一节中,pdf问题中有一个jasper report字符编码。 jasper报告中无法解决该问题,因为它似乎是一个itext问题(使用itext v.5.5.4) 示例代码: 可在mm3下载字体。ttf公司 将错误渲染为: 它应该呈现为(在浏览器中使用相同的ttf) 只是出于好奇发生了什么事?(看起来像是某些字符,带虚线的圆圈应该向后移动,但这不会发生)。 这是<代码