Nur bestimmten Bereich im WebView anzeigen?

  • Antworten:11
Philipp N.
  • Forum-Beiträge: 5

30.09.2012, 15:11:20 via Website

Hi,
ist es möglich in einer WebView nur einen bestimmten Bereich (z.B. eine DivBox) anzuzeigen und wenn ja, könnte jemand ein Beispiel geben? Die Seite nochmal zu kopieren und dann nur den Bereich, den ich brauche, darzustellen ist eigtl. keine optimale Lösung :/

Grüße

Antworten
Christian
  • Forum-Beiträge: 307

02.10.2012, 14:01:40 via Website

Hi P. Nowak,

Die Seite nochmal zu kopieren und dann nur den Bereich, den ich brauche, darzustellen ist eigtl. keine optimale Lösung :/
Besteht dein App nur aus der WebVIew? Weil wenn ja kannst du doch innerhalb der Website per JS oder Html zu bestimmten prunkten springen.

Oder versteh ich dich falsch?

mfg christian

Antworten
Philipp N.
  • Forum-Beiträge: 5

02.10.2012, 15:49:09 via Website

Hi,
die App besteht aus einem Webview und einer Art "Navigationsleiste" unten. Das Problem ist, dass die Website halt auch ein Menü, Header etc. hat und ich in der Webview aber nur den bestimmten Bereich mit dem Text, also praktisch das Inhaltsfenster haben möchte.

Grüße

Antworten
Christian
  • Forum-Beiträge: 307

02.10.2012, 21:06:21 via Website

Hi,

die Seite die du in der Webview anzeigen lässt ist schon auf dem Gerät oder lädst du eine Website vom Server?

mfg Christian

Antworten
Markus B.
  • Forum-Beiträge: 636

02.10.2012, 23:58:34 via Website

Hi,
also mein Stand der Dinge ist folgender:
Die Webview ist eigentlich nicht dazu gedacht die zu ladende Seite zu manipulieren. Es soll nur eine einfach Möglichkeit sein Web-Inhalt darzustellen.
Deswegen auch der Name denke ich mal :)
Du kannst aber nach dem Laden der Seite JavaScript nachschieben und dann z.B. das css manipulieren und Teile der Seite nachträglich ausblenden/ändern.

Z.B:
1@Override
2 public void onPageFinished(WebView view, String url)
3 {
4 webview.loadUrl("javascript:(function() { " +
5 "document.getElementsByTagName('body')[0].style.color = 'red'; " +
6 "})()");
7 }

Musst einfach mal schauen wie das entsprechend bei deiner Seite aussieht bzw. funktioniert.

Gruß,
Markus

Antworten
Stephane
  • Forum-Beiträge: 20

30.03.2013, 10:46:51 via Website

hi

ich weiss es ist schon lange her aber hast du es geschafft p. novak? Würde mich interessieren da ich gerade das selbe versuche.

mfg.
stephane

Antworten
impjor
  • Forum-Beiträge: 1.793

30.03.2013, 10:58:31 via App

Markus B.
Hi,
also mein Stand der Dinge ist folgender:
Die Webview ist eigentlich nicht dazu gedacht die zu ladende Seite zu manipulieren. Es soll nur eine einfach Möglichkeit sein Web-Inhalt darzustellen.
Deswegen auch der Name denke ich mal :)
Du kannst aber nach dem Laden der Seite JavaScript nachschieben und dann z.B. das css manipulieren und Teile der Seite nachträglich ausblenden/ändern.

Z.B:
1@Override
2 public void onPageFinished(WebView view, String url)
3 {
4 webview.loadUrl("javascript:(function() { " +
5 "document.getElementsByTagName('body')[0].style.color = 'red'; " +
6 "})()");
7 }

Musst einfach mal schauen wie das entsprechend bei deiner Seite aussieht bzw. funktioniert.

Gruß,
Markus
Ich würd's so machen, nur halt:
1document.getElementById('Element zum ausblenden').style.display = "none";

Muss halt alles ausgeblendet werden, bis nur das übrig bleibt, was sichtbar sein soll.
Gruß

Liebe Grüße impjor.

Für ein gutes Miteinander: Unsere Regeln
Apps für jeden Einsatzzweck
Stellt eure App vor!

Stephane

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.03.2013, 11:00:34 via Website

Mach das mit einem Javascript Interface, also den HTML Quelltext Auslesen und dann die HTML so abändern so wie du es willst.
Dannach musst du nur noch die Bearbeitete HTML in die WebView laden.
Link:

http://stackoverflow.com/questions/9966760/how-i-get-page-source-from-webview

Oder du hast zugriff auf den Server,dann kanst du das Problem natürlich auch serverseitig lösen.

LG Pascal //It's not a bug, it's a feature. :) ;)

Antworten
Stephane
  • Forum-Beiträge: 20

30.03.2013, 15:02:00 via Website

Vielen Dank für die schnellen Antworten!

Die Seite von Hand zurecht schneiden ist mir zu aufwendig da sie oft aktualisiert wird. Daher habe ich die Code von impjor versucht zu verwenden. Bei mir kommt aber immer die Fehler Url nicht gefunden oder Webseite nicht verfügbar. Ich habe verschiedenes Versucht, hier mal mein letzter Versuch:

1webview1.loadUrl("http:s//www.ocaholic.ch/xoops/html/modules/news/ { " +
2 "document.getElementsById('header').style.display = 'none'; " +
3 "})()");

mfg.
Stephane

Antworten
Pascal P.
  • Admin
  • Forum-Beiträge: 11.286

30.03.2013, 15:14:38 via Website

Stephane

1webview1.loadUrl("http:s//www.ocaholic.ch/xoops/html/modules/news/ { " +
2 "document.getElementsById('header').style.display = 'none'; " +
3 "})()");



Das ist nicht ganz richtig.


1WebView wv = (WebView)findViewById(R.id.webView);
2wv.getSettings().setJavaScriptEnabled(true); // Aktivire Javascript.
3
4
5 /* WebViewClient must be set BEFORE calling loadUrl!
6 wv.setWebViewClient(new WebViewClient() {
7 // Starte neuen WebClient, mit dem Überprüft wird ob die Url fertig geladen ist.
8
9 @Override
10 public void onPageFinished(WebView view, String url)
11 {
12view.loadUrl("javascript function() { " +
13 "document.getElementsByTagName('body')[0].style.color = 'red'; " +
14 "})()");
15 }
16
17
18 }
19 });
20 wv.loadUrl("http://www.ocaholic.ch/xoops/html/modules/news/");

— geändert am 30.03.2013, 15:15:42

LG Pascal //It's not a bug, it's a feature. :) ;)

Stephane

Antworten
Stephane
  • Forum-Beiträge: 20

30.03.2013, 17:05:25 via Website

Cool vielen Dank, jetzt verstehe ich alles! Hab das am Anfang vollkommen falsch verstanden. Nur findet es im Moment die Id nicht oder der Abschnitt verschwindet nicht. Ich habe alles Kontrolliert und habe keine Fehler entdeckt und die Id ist sicher richtig.

Antworten
Stephane
  • Forum-Beiträge: 20

30.03.2013, 21:19:05 via Website

Ich habe den Fehler gefunden!! Beim Beitrag von Markus B. hat es ja dieses Smiley im Code: :(, das müsste aber die Zeichen : und ( sein. Deswegen hat es nicht funktioniert!
Vielen Dank euch allen!
mfg.
Stephane

Antworten