Android WebView 不能弹出alert的对话框

举报
yd_221104950 发表于 2020/12/03 23:59:20 2020/12/03
【摘要】 加载WebView弹框没有弹出来,百思不得其解,后来发现是Android WebView会阻止alert对话框弹出。如何才能让它不阻止呢,解决方法如下: mWebview.setWebChromeClient(new WebChromeClient(){ @Override public boolean onJsAlert(WebView view, String u...

加载WebView弹框没有弹出来,百思不得其解,后来发现是Android WebView会阻止alert对话框弹出。如何才能让它不阻止呢,解决方法如下:

mWebview.setWebChromeClient(new WebChromeClient(){ @Override public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return super.onJsAlert(view, url, message, result); } });


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

问题成功解决!

源码中WebChromeClient类的onJsAlert方法默认返回false:

 /** * Tell the client to display a javascript alert dialog.  If the client * returns {@code true}, WebView will assume that the client will handle the * dialog.  If the client returns {@code false}, it will continue execution. * @param view The WebView that initiated the callback. * @param url The url of the page requesting the dialog. * @param message Message to be displayed in the window. * @param result A JsResult to confirm that the user hit enter. * @return boolean Whether the client will handle the alert dialog. */ public boolean onJsAlert(WebView view, String url, String message, JsResult result) { return false; }


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

当我们覆盖父类WebChromeClient的方法onJsAlert,设置为true,也是不行的。那么整个页面的焦点都在alert这里,这个页面触摸将会没有任何反应。只有返回super.onJsAlert(view,url,message,result)时,才能在需要alert弹框时才获取焦点,其余的由WebView自己处理。

谢谢阅读

文章来源: blog.csdn.net,作者:WongKyunban,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/weixin_40763897/article/details/88951765

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。