Flash und das Attribut wmode: Ansicht von swf auf Websites

Wer kennt es nicht: man bindet ein swf auf einer Website ein, standardmäßig überlappt die Flash-Animation dann aber auch alle anderen Elemente auf der Site, Javascript-Navigationen und (D)HTML-Elemente beissen sich mit dem swf und werden überlagert.
Die Lösung ist das wmode-Attribut, das beim param- und beim embed-Tag angegeben werden muss.

<param name='wmode' value='opaque'>

Weitere Informationen dazu direkt bei Adobe: http://livedocs.adobe.com/flash/9.0_de/UsingFlash/help.html?content=WSd60f23110762d6b883b18f10cb1fe1af6-7ba7.html

Hier nachstehend ein kleines komplettes Beispiel:

<div style="padding-top: 10px; padding-bottom: 10px; padding-left: 8px;"> <object width="306" height="150" classid="clsid:27CDB6E-AE6D-11cf-96B8-1941085" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0">
<param name="movie" rel="nofollow" value="/flash/yourfile.swf"/>
<param name="quality" value="high"/>
<param name="wmode" value="opaque"/>
<param name="bgcolor" value="#bfbfbf"/> <embed width="306" height="150" wmode="opaque" src="/flash/yourfile.swf" rel="nofollow" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash"></embed> </object> </div>

So eingebunden sollte die Animation keine anderen Elemente mehr überlappen.

CSS-Optimierung mit dem Firebug-Plugin CSS Usage

Ich muss sagen, das sieht ziemlich vielversprechend aus auf die ersten paar Blicke zum CSS-Optimieren. Der dazugehörige Tipp kam vom Kollegen Michael Hnat von Bluegras: das Firebug-Plugin „CSS-Usage“ (erhältlich unter https://addons.mozilla.org/en-US/firefox/addon/10704). CSS-Usage erweitert Firebug um einen zusätzlichen Tab, wenn man den ausgewählt hat, kann man die Website scannen.

CSS Usage

CSS Usage

Nachdem der Scan beendet ist, sieht man die einzelnen Klassen aller beteiligten Stylesheets mit verschiedenen Farben gekennzeichnet. So sind zum Beispiel nicht verwendete Klassen mit rot markiert, was einem durchaus gut helfen kann, Altlasten loszuwerden. Hellgrün markierte Klassen wurden auf der momentan gescannten Seite gefunden, dunkelgrüne Klassen auf einer der vorher besuchten, man kann sich also größere Teile einer Website anschauen und übereinander scannen.

Man kann sich dann auch noch eine bereinigte Version des CSS exportieren, wo die nicht benutzten Klassen direkt auskommentiert sind, auf dieser Basis kann man die Stylesheets schon recht gut ausmisten. Momentan klappt die Anzeige der Zeilennummern noch nicht richtig, aber die Anhaltspunkte, die man durch das Add-On bekommt, sind wirklich sehr hilfreich. Wenn Ihr noch mehr darüber wissen wollt, könnt Ihr auch mal auf http://spaghetticoder.org/cssusage/ vorbeischauen.

Youtube Video an einem bestimmten Zeitpunkt starten

Ziemlich bekannt ist ja bereits, dass man mit den entsprechenden Zeitparamtern direkt an eine bestimmte Stelle in einem Youtube-Video springen kann. Das sieht ja dann so aus:

http://www.youtube.com/watch?v=F8UUFa9Lt4Q#t=01m28s

Der Paramter #01m28s lässt das Video erwartungsgemäß direkt bei 01:28 starten. Weit weniger bekannt ist, dass es so einen Paramter auch für embedded Videos gibt, dazu verwendet Ihr allerdings den start-Parameter, der in Sekunden angibt, wo das Video starten soll – hier ein kleines Beispiel:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" width="600" height="375" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"><param name="allowscriptaccess" value="always" /><param name="src" value="http://www.youtube.com/watch?v=F8UUFa9Lt4Q&start=36" /><embed type="application/x-shockwave-flash" width="600" height="375" src="http://www.youtube.com/watch?v=F8UUFa9Lt4Q&start=36" allowscriptaccess="always"></embed></object>

In diesem Fall würde das Video also entsprechend bei 36 Sekunden starten:

einmal den Google Reader in schön bitte

Wer wie ich den Google Reader schätzt und benutzt, um der täglichen Informationsflut Herr zu werden, der hat sich sicher auch schon oft gedacht: „Mann, ist das alles hässlich hier“! Gut, dass man Abhilfe schaffen kann. Mein Lieblings-Theme ist „Helvetireader“, ein minimalistisches Theme, das sich auf das Wesentliche beschränkt und leicht zu installieren ist.

Helvetireader

Helvetireader

Die Installation in Firefox, Opera, Chrome oder Safari ist fix gemacht:

1. Firefox Add-On Greasemonkey installieren
(https://addons.mozilla.org/en-US/firefox/addon/748)
2. http://helvetireader.com/ aufrufen
und dort „install as a userscript“ (http://helvetireader.com/)
3. schon fertig
der Google Reader erscheint in neuem Glanz

Wer meinen Geschmack nicht teilt, aber trotzdem einen neuen Look für seinen Reader sucht: weitere Themes lassen sich leicht durch eine Google-Suche finden.

Reblog this post [with Zemanta]

Datepicker für Formulare mit jQuery UI

Immer wieder gestaltet man als Webworker Formulare für Websites, die Felder für Datumswahl beinhalten. Ich zeige in diesem Blogpost auf, wie man diese Aufgabe schnell und elegant mit Hilfe von jQuery UI löst.

Als erstes braucht man natürlich die jQuery-Javascript-Bibliothek in der Applikation (http://jquery.com/), für den produktiven Einsatz wird selbstverständlich die minimierte Version eingesetzt. Zusätzlich benötigt man den UI-Core, der bei Google Code unter http://jquery-ui.googlecode.com/svn/trunk/ui/jquery.ui.core.js erhältlich ist und zum guten Schluss das Datepicker-Plugin unter http://jquery-ui.googlecode.com/svn/trunk/ui/jquery.ui.datepicker.js.

Auf der HTML-Seite werden die JS-Files nun im Header eingebunden. Ausserdem bindet Ihr ein CSS ein, das Ihr Euch am besten direkt von http://blog.jqueryui.com/2010/02/jquery-ui-download-builderthemeroller-status/ holt:

<html>
<head>
<title>jquery ui form test</title>
<script type="text/javascript" src="/js/jquery-1.4.1.min.js"></script>
<script type="text/javascript" src="/js/jquery.ui.core.js"></script>
<script type="text/javascript" src="/js/jquery.ui.datepicker.js"></script>
<link rel="stylesheet" href="/styles/ui_sunny.css" type="text/css" media="all" />
</head>

Im Body wird das Formular gecodet. Das Vor-Belegen der beiden Formularfelder mit dem aktuellen Datum (und dem aktuellen Datum plus 1 Tag), sowie das Handling für Formular anzeigen/Formular bearbeiten habe ich hier mit Coldfusion gelöst, kann man ja jeweils auch in der Lieblings-Sprache seiner Wahl umsetzen:

<body>
<cfset currentDateFrom = createODBCDate(now()) />
<cfset currentDateFrom = DateFormat(currentDateFrom,"dd-mm-yyyy") />
<cfset currentDateTo = createODBCDate(now()) + 1 />
<cfset currentDateTo = DateFormat(currentDateTo,"dd-mm-yyyy") />


<cfif cgi.REQUEST_METHOD eq "POST">
<cfdump var="#form#">
<cfelse>

<script type="text/javascript">
$(function() {
$("#datepickerFrom").datepicker({ dateFormat: 'dd-mm-yy' });
$("#datepickerTo").datepicker({ dateFormat: 'dd-mm-yy' });
});
</script>
<form name="DateForm" method="post" action="#cgi.script_name#">
<p>
<label for="datepickerFrom">Start-Datum:</label>
<input class="inputDate" id="datepickerFrom" name="datepickerFrom" style="width:100px" value="<cfoutput>#currentDateFrom#</cfoutput>" />
</p>
<p>
<label for="datepickerTo">Ende-Datum:</label>
<input class="inputDate" id="datepickerTo" name="datepickerTo" style="width:100px" value="<cfoutput>#currentDateTo#</cfoutput>" />
</p>
<p><input type="submit" value="Auswertung starten" /></p>
</form>
</cfif>
</body>
</html>

Hier ist der Aufruf des Datepickers an die Formular-Elemente mit den ID’s „datepickerFrom“ und „datepickerTo“ gebunden, als zusätzlicher Paramter wird das Datum in einem bestimmten Format festgelegt. Ein schöne Übersicht aller möglichen Attribute, Events und Methoden ist unter http://jqueryui.com/demos/datepicker/ zu finden. Unter dieser Adresse gibt es auch eine Demo von allen möglichen schicken UI-Themes.

Als Ergebnis erhalten wir also nun ein Formular mit 2 Datumswahl-Feldern, nach dem Abschicken wir nur ein Dump des Formular-Objekts angezeigt. Das sollte als Grundgerüst für den weiteren Ausbau genügen – viel Spass damit.

Scripte beobachten und debuggen mit Javascript Deobfuscator

Scripte beobachten und debuggen mit Javascript Deobfuscator

Scripte beobachten und debuggen mit Javascript Deobfuscator

Abteilung kleine Helferlein: der Javascript Deobfuscator ist eine Firefox Extension, die sich prima eignet, um eventuellen Problemen mit JS-Code auf die Schliche zu kommen. Die Erweiterung zeigt an, welcher Skripte auf der Website ausgeführt werden, auch wenn der JS-Code dynamisch generiert wird. Die Extension ist über das Extras-Menü vom Firefox zu öffnen, die jeweilige Ansicht im Popup gibt Informationen, welche Skripte kompiliert beziehungsweise ausgeführt werden. Hier gibts die Extension zum Download.

Euer FCKEditor geht plötzlich nicht mehr im Firefox?

Neues aus der Abteilung Kuriositäten: wenn Ihr den FCKEditor einsetzt und Euch wundert, dass dieser plötzlich unter Firefox 3.6 nicht mehr geht, dann hier die Lösung dazu: es liegt eher am Jahr 2010, ist halt unglücklich mit dem Erscheinen des neuen Firefox zusammengefallen. Im Connector werden die Gecko-Browser mit folgender Überprüfung versehen, wenn der Paramter checkBrowser aktiviert ist:

stResult = reFind( "gecko/(200[3-9][0-1][0-9][0-3][0-9])", sAgent, 1, true );

Prima, also wahrscheinlich so ziemlich das gleiche lustige Problem wie mit den EC-Karten.
Dies müsst Ihr also ersetzen durch eine zeitgemäße Prüfung, wenn Ihr den Editor auch weiterhin verwenden wollt:

stResult = reFind( "gecko/(20[0-9][0-9][0-1][0-9][0-3][0-9])", sAgent, 1, true );

Optional kann man natürlich auch den Browsercheck durch die Deaktivierung des Paramters checkBrowser komplett umgehen.