Notizen und Gedanken von Andreas Marc Klingler

Schlagwort: Browser

Neue Mög­lich­kei­ten mit WebRTC

Ich habe mir schon vor län­ge­rem vor­ge­nom­men, mich mal aus­gie­big mit Web­RTC zu beschäf­ti­gen. Mit die­ser noch in der Ent­wick­lung befind­li­chen Web-Tech­nik wird es mög­lich, belie­bi­ge Daten in Echt­zeit direkt zwi­schen Brow­sern zu über­tra­gen. Zum Bei­spiel ist damit eine Anwen­dung wie Sky­pe nativ im Brow­ser mög­lich — ohne den Umweg über US-Ser­ver, die alles unbe­grenzt spei­chern.

Sehr span­nend. Letz­ten Mon­tag fand im Beta­haus das ers­te Web­RTC-Tref­fen statt; mit tol­len Leu­ten und Vor­trä­gen. Eini­ge Notizen:

  • In Mac OS ist seit eini­ger Zeit der Dienst Air­Drop ein­ge­baut. Damit kann man im loka­len Netz zwi­schen zwei Macs Datei­en aus­tau­schen. Und zwar idio­ten­si­cher. Genau die­sen Dienst gibt es jetzt auch als Web-Platt­form unter sharedrop.io. Im loka­len Netz kann man zwi­schen zwei Rech­nern damit auch platt­form­un­ab­hän­gig Datei­en aus­tau­schen, ohne irgend­wel­che Ser­ver-/Cli­ent-Geschich­ten auf­set­zen zu müssen.
  • Brow­ser-zu-Brow­ser-Tele­fo­nie wird mög­lich. Zwi­schen zwei Brow­sern klappt das direkt, und mit einem Pro­xy-Dienst auch mit dem Fest­netz. Die Live-Demo eines Test­pro­jekts lief einwandfrei.
  • Falls auf­grund von NAT oder ande­ren Netz­werk­ein­schrän­kun­gen kei­ne direk­te Ver­bin­dung zwi­schen zwei Brow­sern mög­lich ist, kann man einen Dienst auf einem gemein­sa­men Ser­ver auf­set­zen, der bei­de „ver­bin­det“. Wenn die Daten über die­sen Ser­ver lau­fen, ist das natür­lich sicher­heits­tech­nisch erst­mal nicht so schön, aber das garan­tiert wenigs­tens die Ver­füg­bar­keit. Und da die Tech­nik dezen­tral ist, las­sen sich hun­dert­tau­sen­de Web­RTC-Ser­ver natür­lich auch nicht so ein­fach über­wa­chen wie z.B. nur Skype-Server.
  • Ich dach­te bis­her bei dem Begriff Web­RTC bis­her pri­mär an „Sky­pe ohne Über­wa­chungs­in­fra­struk­tur direkt im Brow­ser“. Aber abs­trakt gese­hen geht es um direk­ten Aus­tausch belie­bi­ger Daten zwi­schen Brow­sern. Das eröff­net ein gewal­ti­ges Feld an neu­en Möglichkeiten.

Ich glau­be, wir wer­den in Zukunft vie­le Diens­te mit die­ser Tech­nik sehen, wel­che die Gren­ze zwi­schen Desk­top- und Brow­ser-Anwen­dung wei­ter ver­wi­schen werden.

CSS-Feh­ler veur­sacht Feh­ler in Sel­ect-Box in Safari

Kurz nach Beginn der Test­pha­se von Tan­dem Rhein-Main ist mir von einem kurio­sen Feh­ler berich­tet wor­den: In Safa­ri unter Mac OS hat das Kli­cken auf eine Sel­ect-Box ein sofor­ti­ges Neu­la­den aus­ge­löst. Eine Aus­wahl in einer Sel­ect-Box ist so nicht mög­lich gewe­sen. Safa­ri unter Win­dows hat das Ver­hal­ten merk­wür­di­ger­wei­se nicht gezeigt. Die­ses Ver­hal­ten fiel mir vor­her nie auf; dabei habe ich ja selbst einen Groß­teil der Zeit in der Ent­wick­lung der Platt­form mit Safa­ri gearbeitet.

Erst dach­te ich an Pro­ble­me mit Java­Script-Code, aber dar­an lag es nicht. Im erzeug­ten HTML-Code konn­te ich auch nichts fin­den, das die­ses Ver­hal­ten erklärt hät­te. Nach­dem ich kei­ne Ideen mehr hat­te und begann, den Code schritt­wei­se auf eine Mini­mal­ver­si­on zu kür­zen, bin ich auf den Feh­ler gestoßen.

Fol­gen­der Code funk­tio­niert mit aus­kom­men­tier­tem Sel­ect, mit ein­kom­men­tier­tem Sel­ect tritt der Feh­ler wie beschrie­ben auf.

input[type=text],
input[type=password],
textarea,
/* select, */
div.jhtmlarea {
background-image: url(images/inputbg.gif);
   border: 1px solid #bbb;
color: #333;
   font-family: "Ubuntu", "Lucida Grande", "Verdana", "Tahoma";
font-size: 1em;
padding: 4px;
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
}

Bei der Reduk­ti­on die­ser Anwei­sung habe ich fest­ge­stellt, dass der Feh­ler von den bei­den Zei­len mit bor­der und font-fami­ly abhängt. Und zwar von bei­den zusam­men. Bei nur einer der bei­den Zei­len funk­tio­niert alles. Bei­de Zei­len zusam­men, auf eine Sel­ect-Box ange­wandt, ver­ur­sa­chen offen­bar das merk­wür­di­ge Ver­hal­ten von Safari.

War­um?

Ich habe kei­ne Ahnung…

Aktua­li­sie­rung, 14. Okto­ber 2011: Durch @thegcat (1, 2) habe ich erfah­ren, dass dies ein bekann­ter Bug in Safa­ri ist (sie­he u.a. hier, hier und hier). Das Pro­blem lässt sich also durch War­ten beheben…