簡體   English   中英

JavaScript onclick在瀏覽器中有效,在Android WebView中不適用

[英]JavaScript onclick works in browsers, not in Android WebView

我有一個簡單的Web應用程序,試圖通過Android WebView進行顯示。 該網頁僅包含一個HTML表。 所述表格的每個單元格都有一個設置為javascript函數的onclick屬性,該屬性會彈出一個包含一些信息的框。

這在所有瀏覽器(台式機和移動設備)上均能很好地工作。 但是,當我嘗試通過Android WebView單擊任何表單元格時,什么也沒有發生,該網頁似乎無法識別這些單擊。

(注意:我確實為webview啟用了JavaScript,它確實執行了應有的功能,例如,在加載文檔時,只是它無法識別點擊,並且不會觸發相應的事件。)

我試圖尋找答案,但是我沒有運氣。 我發現的所有線程都與解決不同的問題有關。

我並不是想通過調用JavaScript函數來運行Android代碼,我只需要網站JS即可識別點擊。

我必須做些什么才能使這項工作? 在此先非常感謝您,如果我的用語不正確,請不要感到沮喪,我只是一個自學成才的愛好者。

試試吧

在此處輸入圖片說明

然后在HTML中,直接從button標簽調用它:

在此處輸入圖片說明

原來的問題是我正在使用setOnTouchListener來處理WebView單擊,即使我確保返回false也是為了讓Android知道應該由WebView進一步處理該單擊,但這並未發生。 我相信可以通過在代碼中的某個地方調用super.OnTouchEvent(event)來解決此問題,但是我不確定這樣做的確切程度,而且我發現了一種非常簡單的方法,據我看來,該方法可以更清楚地了解實際內容發生。

這個想法是通過擴展WebView並覆蓋onTouchEvent方法來創建自定義“ MyWebView”類:

public class MyWebView extends WebView
{
    private GestureDetector mDetector;

    public MyWebView(Context context)
    {
        super(context);
        mDetector = new GestureDetector(context, new MyGestureListener());
    }

    @Override
    public boolean onTouchEvent(MotionEvent event)
    {
        mDetector.onTouchEvent(event);
        this.performClick();
        return super.onTouchEvent(event);
    }

    @Override
    public boolean performClick()
    {
        return super.performClick();
    }

    class MyGestureListener extends GestureDetector.SimpleOnGestureListener
    {
        @Override public boolean onDown(MotionEvent event)
        {
            return true;
        }

        @Override public boolean onSingleTapConfirmed(MotionEvent e)
        {
            //do stuff here
            return false;
        }
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM