webview處理網(wǎng)頁對(duì)話框

給一個(gè)項(xiàng)目中的webview頁面提示框優(yōu)化處理:

  • 之前顯示的是這樣:
    </div>
    <img src="http://upload-images.jianshu.io/upload_images/3154077-fb19cf86b9cc64a3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width = "200" height = "200" alt="網(wǎng)頁效果" align=center />
    </div>
  • 現(xiàn)在的效果:
    </div>
    <img src="http://upload-images.jianshu.io/upload_images/3154077-6a792d7ff141b9f5.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240" width = "200" height = "200" alt="原生效果" align=center />
    </div>

可以看到標(biāo)題的樣式發(fā)生了改變,其實(shí)我們可以改變對(duì)話框里所有的內(nèi)容.

處理方法:

private class MyWebChromeClient extends WebChromeClient {
 
        @Override
        public boolean onJsConfirm(WebView view, String url, final String message, final JsResult result) {
            runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    new AlertDialog.Builder(MainActivity.this)
                            .setTitle("溫馨提示:")
                            .setMessage(message)
                            .setPositiveButton("確定", new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    result.confirm();//這里必須調(diào)用,否則頁面會(huì)阻塞造成假死
                               //     mWebView.reload();//重新刷新頁面
                                }
                            })
                            .setNegativeButton("取消",new DialogInterface.OnClickListener() {
                                @Override
                                public void onClick(DialogInterface dialog, int which) {
                                    result.cancel();
                                }
                            })
                            .setOnCancelListener(new DialogInterface.OnCancelListener() {
                                @Override
                                public void onCancel(DialogInterface dialogInterface) {
                                    result.cancel();
                                }
                            })
                            .show();
                }
            });

            return true;
        }

    }

關(guān)鍵點(diǎn)

  • 自定義ChromClient,設(shè)置在webview中
  • 之前看文章說是在onJsAlert方法中,加入自己寫的AlertDialog,但是沒效果,斷點(diǎn)也進(jìn)不去,后來我在onJsConfirm方法中加載了這個(gè)AlertDialog,發(fā)現(xiàn)效果實(shí)現(xiàn)了.
  • 重中之重:記得在取消和確認(rèn)的時(shí)候處理result,并且如果AlertDialog是點(diǎn)擊外部取消的話,也要處理result在cancel掉的結(jié)果,否則會(huì)造成webview頁面塞假死
  • 可能會(huì)需要AppCompat的主題,之前我用5.1的Theme.noActionBar之類的主題,崩潰了,現(xiàn)在是Theme.AppCompat.Light

抓取網(wǎng)頁代碼

<a  onclick="return confirmRemoveWishlistItem();" title="刪除項(xiàng)目" class="btn-remove btn-remove2">取消收藏</a>
function confirmRemoveWishlistItem() {
            return confirm('您是否確認(rèn)要從我的收藏中刪除該產(chǎn)品?');
        }

可以看到j(luò)s代碼是調(diào)用了confirm方法的,所以我們?cè)趏nJsAlert方法設(shè)置無效,所以大家可以多試試,有時(shí)候也許前端寫的代碼是alert的,那我們?cè)趏nJsConfirm中設(shè)置肯定是無效的.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 179,057評(píng)論 25 709
  • ¥開啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個(gè)線程,因...
    小菜c閱讀 7,334評(píng)論 0 17
  • 前言 總結(jié) Android WebView 常用的相關(guān)知識(shí)點(diǎn),令包含以下干貨內(nèi)容分析:Js注入漏洞、WebView...
    無名小子的雜貨鋪閱讀 70,119評(píng)論 17 169
  • Tips 由于WebView的用法實(shí)在太多,如果您只是想查詢某個(gè)功能的使用——建議Ctrl+F(Commad+F)...
    BugDev閱讀 7,911評(píng)論 11 109
  • 家是放松、休憩的地方,也是不斷迎接和別離的地方。 “世間所有的愛都指向團(tuán)聚,唯有父母的愛指向別離?!别B(yǎng)育孩子,為他...
    我是張望好時(shí)光閱讀 321評(píng)論 0 1

友情鏈接更多精彩內(nèi)容