当前位置: 首页 > 知识库问答 >
问题:

WebView返回错误窗口。内高

岳良策
2023-03-14

我有一个使用Android WebView的应用程序,以及一些JavaScript。当我的WebViewClient调用onPageFinished()时,我会提醒我的JavaScript运行一个初始化方法。在我点击onPageFinished()之前,我的JavaScript已启用并加载。

在这个JavaScript方法中,我使用了窗口。innerWidth。然而,它返回的值总是错误的,而且总是相同的。不管我的方位如何,它都会报告内部宽度为320,内部高度为240。(纵向和横向的正确宽度值分别为360和598。)我访问窗口的任何其他地方。innerWidth窗口。innerHeight在JavaScript中,它给了我一个准确的数字。

更令人费解的是,如果我直接在我的onPageFinished()调用中使用

int高度=view.get高度();

int width=view。getWidth()

然后它总是正确返回(尽管它返回确切的像素数,而不是DIP)。这让我认为WebView的一切都已经完成加载,所以我的JavaScript应该不会有任何问题。

你知道发生了什么事吗?

提前感谢!


共有3个答案

乐正玺
2023-03-14

经过一些阅读,出现了另一种解决方案。在java代码中,我们可以使用

new Handler().post(new Runnable(){ 
    @Override 
    public void run(){
        webview.loadUrl("...")
    }
}); 

将它添加到QueueMessage,并延迟js的执行,它就可以工作了。

沈高峻
2023-03-14

最后,我使用了来自webView.getHeight()webView.getWidth()的值,根据屏幕密度对它们进行了调整,并通过webView.loadUrl()将它们作为参数传递到javascript方法中。这是我可以确保获得正确值的唯一方法。

按照上面评论中的建议,检查320的宽度和240的高度将非常有效。。。直到你在具有这些精确尺寸的设备上运行。

牟华翰
2023-03-14

这是因为Javascript在WebView的View相关初始化之前执行。Android WebView将320x240默认值返回给JS。一段时间后执行你的JS就可以了,像这样

function go() {
int height = view.getHeight();
int width = view.getWidth();
};
window.setTimeout(go, 300);
 类似资料:
  • 基类控制器里有error方法,用于api的错误消息返回输出 /** * 操作错误跳转的快捷方法 * @access protected * @param mixed $msg 提示信息,若要指定错误码,可以传数组,格式为['code'=>您的错误码,'msg'=>'您的错误消息'] * @param mixed $data 返回的数据 * @par

  • 主要内容:本节引言:,1.页面错误,加载自定义网页:,2.页面错误,显示相应的View,3.示例代码下载:,本节小结:本节引言: 嘿嘿,假如你们公司是做HTML5端的移动APP的,就是通过WebView来显示网页的,假如你访问的网页 不存在,或者其他错误,报404,401,403,30X等错误的状态码,如果直接弹出WebView默认的错误 提示页面,可能显得不那么友好,我们可以重写WebViewClient的onReceivedError()方法来实现我们 想要的效果,一般的做法有两种,一种是:

  • 所以我有一个java JFrame,我把画布放进去,它出现在错误的坐标上,好像它把0,0作为左下角,而不是左上角。这是我的密码。 为什么不使用常规窗口坐标(如0,0为左上角)?

  • 在下面的代码中,当我试图将数据插入firebase Firestore时,数据被插入,但在返回promise时,它将错误作为内部错误返回。Hera是控制台记录的错误 在index.js中的console.log()上登录云函数时出错 引发内部错误的原因是什么

  • 我是JS的学生。我有一段代码返回了一个错误。 这是返回的语法错误。你们能解释一下我做错了什么吗?

  • 问题内容: 我正在尝试简单地在android的webview中设置和检索cookie。我尝试了许多cookie管理器脚本来尝试使它工作。我启用了JavaScript。 在Samsung S3和Samsung Galaxy Tab 10.1上运行该应用程序时,cookie似乎根本没有设置(android 4.1)。但是,在Samsung Galaxy ace,HTC Desire Z和android