[英]JavaScript onclick works in browsers, not in Android WebView
我有一個簡單的Web應用程序,試圖通過Android WebView進行顯示。 該網頁僅包含一個HTML表。 所述表格的每個單元格都有一個設置為javascript函數的onclick屬性,該屬性會彈出一個包含一些信息的框。
這在所有瀏覽器(台式機和移動設備)上均能很好地工作。 但是,當我嘗試通過Android WebView單擊任何表單元格時,什么也沒有發生,該網頁似乎無法識別這些單擊。
(注意:我確實為webview啟用了JavaScript,它確實執行了應有的功能,例如,在加載文檔時,只是它無法識別點擊,並且不會觸發相應的事件。)
我試圖尋找答案,但是我沒有運氣。 我發現的所有線程都與解決不同的問題有關。
我並不是想通過調用JavaScript函數來運行Android代碼,我只需要網站JS即可識別點擊。
我必須做些什么才能使這項工作? 在此先非常感謝您,如果我的用語不正確,請不要感到沮喪,我只是一個自學成才的愛好者。
原來的問題是我正在使用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.