تعمل روابط WebView JavaScript على اللمس ولكن ليس عند استخدام كرة التتبع

StackOverflow https://stackoverflow.com/questions/1396495

  •  22-09-2019
  •  | 
  •  

سؤال

لدي نشاط بسيط قائم على WebView يتبع مرحبًا ، WebView مثال لتمكين JavaScript والحمل الزائد shouldOverrideUrlLoading().

يعمل هذا النشاط بشكل رائع عندما يلمس المستخدم الروابط على صفحة الويب. ومع ذلك ، إذا كان المستخدم يستخدم كرة التتبع والنقر على رابط ، فإن تحميل الصفحة الناتج يعرض صفحة مع تعطيل JavaScript.

public class ViewUrl extends Activity {
    protected WebView view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_url);

        final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947";

        view = (WebView) findViewById(R.id.widget1);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl( url );
        view.setWebViewClient( new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
            }

        });
    }
}

ملف view_url.xml واضح ومباشر:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <WebView
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@+id/widget1" />

</RelativeLayout>

فيما يلي بعض لقطات الشاشة التي توضح كل من السلوك الصحيح وغير الصحيح.

انقر فوق استخدام Touch (صحيح):

انقر فوق استخدام اللمس (صحيح)

انقر فوق استخدام كرة التتبع (غير صحيح):

انقر فوق استخدام TrackBall (غير صحيح)

أي أفكار كيف يمكنني إصلاح سلوك كرة التتبع لتكون نفس سلوك اللمس؟ أو على الأقل تمكين JS عند النقر فوق الروابط عبر كرة التتبع؟

هل كانت مفيدة؟

المحلول

يبدو أن مثال "Hello ، WebView" مكسور. بناءً على اقتراح شخص ما على قناة IRC ، قمت بإزالة تجاوز shouldOverrideUrlLoading() ويبدو أن كل شيء يعمل بسباحة.

رمز العمل المنقح:

public class ViewUrl extends Activity {
    protected WebView view;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.view_url);

        final String url = "http://www.opentable.com/phone/reviews.aspx?rid=2947";

        view = (WebView) findViewById(R.id.widget1);
        view.getSettings().setJavaScriptEnabled(true);
        view.loadUrl( url );
        view.setWebViewClient( new WebViewClient() ); // probably not necessary if you don't do anything else with the WebViewClient
    }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top