| 

.NET C# Java Javascript Exception

2
Ich arbeite mit dem .NET Compact Framework 3.5 und dem WebBrowser-Control. Die verwendete .NET-Version ist Build 9198, d.h. der hier erwähnte Hotfix ist enthalten (das ist wichtig, weil er de facto gegenüber dem vorigen Stand ein völlig anderes Browser-Verhalten bewirkt).

An diesem Setup komme ich nicht vorbei - es sei denn, jemand weiß einen anderen als Control einbettbaren Browser für .NETCF.

Zielgerät ist ein HTC HD2, Auflösung 480x800 Pixel. Aufgrund eines mehrere Jahre alten, bestätigten, aber trotzdem ungefixten Bugs arbeitet der Browser mit 240x400 Pixeln und verdoppelt alle Größenangaben. Workaround: im HTML/CSS alle Größen halbieren. Das funktioniert zum Glück, sogar mit halben Pixeln.

Außerdem brauche ich den Browser im Desktop-Modus. Er soll sich an meine CSS-Vorgaben halten und nicht auf eigene Faust herumoptimieren. Deshalb verwende ich das Metatag "mobileoptimized".

Und schließlich soll die Anwendung im Vollscreenmodus laufen, d.h. den gesamten Bildschirm ausnutzen. Als Demo diene folgendes HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta name="mobileoptimized" content="240" />
<title>Demo</title>
</head>
<body style="padding:0px;margin:0px;">
<p style="padding:0px;margin:0px;"><img alt=""
src="picture.png" height="400px" width="240px"
style="padding:0px;margin:0px;"/></p>
</body>
</html>


Das Problem ist nun: es werden völlig unnötigerweise Scrollbars eingeblendet. Das Kuriose dabei ist: wenn ich eine der beiden Größenangaben des Bildes, egal ob Höhe oder Breite, um mindestens 11.5 Pixel (macht auf dem Screen also 23 Pixel) reduziere, so verschwinden beide Scrollbars. Das heißt, ich kann entweder Höhe oder Breite des Bildschirms ausnutzen, aber nicht beides gleichzeitig. Wer weiß dafür eine Lösung?

(In der echten Anwendung will ich übrigens kein Billd auf volle Screen-Größe bringen, sondern meinen Bildschirm mit divs aufteilen. Das Problem ist aber das gleiche und läßt sich so am besten auf den Punkr bringen.)
17.06.2011
Matthias Hlawatsch 13,2k 4 9
2 Antworten
0
Hört sich vielleicht blöd an, mich würde es interesieren was passiert wenn Du es so schreibst:

<body style="padding:0px;margin:0px;"><img alt="" src="picture.png" height="400px" width="240px" style="padding:0px;margin:0px;"/></body>


Sprich ohne das <p> Tag und alles in einer Zeile.
17.06.2011
Jaksa 4,0k 1 8
Scrollbars. Und um die dann wegzukriegen, muss ich sogar beide Größenangaben reduzieren, nicht nur eine. Und die vertikale sogar um 3 (=6) Pixel mehr.
Abgesehen davon ist mir der Paragraph als Block-Element wichtig für die Übertragbarkeit auf mein originales Problem, bei dem ich mit divs hantiere.
Matthias Hlawatsch 17.06.2011
Ich hatte mal früher bei bestimmten Browsern das Problem dass diese versucht haben das Whitespace (Zeilenumbruch, Leerzeichen) mit auszugeben. Daher die Frage was passiert wenn Du es direkt in eine Zeile schreibst.
Jaksa 18.06.2011
Ja, den Effekt kenne ich, und an einigen Stellen zeigt ihn dieser Browser auch. Deshalb auch das "zerstückelte" img-Tag in meinem Beispiel. Scheint mir aber ansonsten in diesem Fall keine Rolle zu spielen.
Matthias Hlawatsch 18.06.2011
0
Eine Erklärung hab ich zwar nicht (sollte man vielleicht aber auch besser nicht erwarten, wenn man es mit älteren Mitgliedern der IE-Familie zu tun hat), aber dafür sogar zwei Lösungen:

Die eine: viele Layouts, und auch meine umzusetzende Vorlage, haben rechts oder unten etwas "Luft". Nur der Hintergrund muss entsprechend gefüllt sein. Wenn man am body keine Größenangaben macht, aber ein (komplettes) Hintergrundbild hinterlegt, kann man für den Rest der Seite mit einer reduzierten Breite oder Höhe leben.

Das habe ich aber nicht bis zum Ende durchgezogen, weil mir was anderes aufgefallen ist: wenn ich eine der beiden Größenangaben nicht absolut, sondern als "100%" angebe, dann funktioniert es auf einmal. In meinem Beispiel muss ich die Größen dann in den Style ziehen, weil der Browser sonst die Bildproportionen durchsetzt, aber das passt sowieso besser zum "Live-"Problem. Das Beispiel-HTML wäre also so zu modifizieren:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de">
<head>
<meta name="mobileoptimized" content="240" />
<title>Demo</title>
</head>
<body style="padding:0px;margin:0px;">
<p style="padding:0px;margin:0px;"><img alt=""
src="picture.png"
style="padding:0px;margin:0px;background-color:Blue;height:400px;width:100%"/></p>
</body>
</html>
18.06.2011
Matthias Hlawatsch 13,2k 4 9

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH