WebView und jQuery

  • Hi Leute,


    ich würde gerne in einer WebView eine Website anzeigen, die nicht mir gehört. Auf dieser Website befindet sich eine mit jQuery realisierte Slideshow. Firebug sagt konkret jquery-1.3.2.min.js und jquery-ui-1.7.2.custom.min.js.
    Im Android Standard-Browser und in Chrome Beta funktioniert die Slideshow, nur in meiner WebView tut sie das nicht.


    Ich hab mich mit verschiedensten Einstellungsmöglichkeiten gespielt und unter anderem hardwareAccelerated auf true gesetzt, Plugins enabled, den PluginState auf On gestellt und setAllowFileAccess auf true. JavaScript ist auch aktiv. Alles etwas zusammen gewürfelt, das Resultat von einiger Zeit googeln -.-


    Nun wende ich mich mit meinen letzten paar Nerven zu dem Thema an euch, in der Hoffnung dass mir jemand den entscheidenden Brotkrumen zuwirft. Hat jemand eine Idee?



    Gruß,
    matze


    EDIT:


    also es funktioniert jetzt. Letztendlich habe ich nach einigem min und target SDK herumstellen bemerkt, dass meine Zeile

    Java
    settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);


    als deprecated markiert ist. Hab sie auskommentiert und siehe da, es geht. Ob das jetzt allerdings der ausschlaggebende Punkt war kann ich echt nicht sagen.
    Folgenden Code habe ich
    [Java]
    // Skalierung der Seite setzen
    wv.setInitialScale(Tools.getScale(this));
    wv.setPadding(0, 0, 0, 0);

    WebSettings settings = wv.getSettings();
    settings.setDefaultTextEncodingName("UTF-8");
    settings.setPluginsEnabled(true);
    settings.setPluginState(WebSettings.PluginState.ON);
    settings.setAllowFileAccess(true);
    settings.setAllowContentAccess(true);

    // Ansicht hochkant starten
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);


    // Websites enthalten Javascript, ohne geht das Scrollen nicht mehr
    settings.setJavaScriptEnabled(true);


    // Online-Seiten sollen scroll und zoombar sein
    settings.setBuiltInZoomControls(true);
    wv.setHorizontalScrollBarEnabled(true);

    // Website in sichtbaren Bereich einpassen
    settings.setUseWideViewPort(true);
    // settings.setLoadWithOverviewMode(true);
    //settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

    // URL laden
    wv.loadUrl(location);
    [/Java]


    Die Tools.getScale(this) sieht so aus:
    [Java]
    /**
    * calculates the scale for the webview content
    * @param context Context
    * @return int
    */
    public static int getScale(Context context) {
    if (context == null) return 0;
    Display display = ((WindowManager) context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
    int width = display.getWidth();
    Double val = Double.valueOf(width) / Double.valueOf(Const.WEBWIDTH); // Const.WEBWIDTH hat den Wert 638, ist nur der Übersicht und Sauberkeit halber ausgelagert
    val = val * 100d;
    return val.intValue();
    }
    [/Java]
    Des Weiteren habe ich in der AndroidManifest dem <application> Tag

    Code
    android:hardwareAccelerated="true"


    hinzugefügt. Hierzu habe ich meien minSdk auf 9 und meine targetSdk auf 14 gestellt. Irgendwo steht zwar, dass hardwareAccelerated erst ab 11 geht, habs aber auf nem Gerät mit Android 2.3.4 getestet, das die SdkVersion 9 oder 10 haben müsste. Funktioniert dort auch einwandfrei. Zumindest wirfts keinen Fehler ;)


    Falls jemandem noch Verbesserungen auffallen oder ich noch mehr Code posten soll einfach bescheid geben.


    Gruß,
    matze

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!