BlogKontaktTagcloud

Synchroner Aufruf mit XMLHttpRequest in Firefox

Ein synchroner XMLHttp-Aufruf in JavaScript ist theoretisch nicht so schwer. Die Dokumentation ist, wohl weil synchrone Aufrufe im Vergleich zu asynchronen relativ selten benötigt werden, eher spärlich und teilweise verwirrend. Das grösste Problem ist dass das XMLHttpRequest-Objekt sind nicht in allen Browsern gleich verhält. So lässt sich der untenstehende Request im Konqueror (und wohl auch in älteren Internet Explorern und Safari) ausführen, obwohl der Aufbau eigentlich falsch ist.

//Not valide Request!
xmlHttp.open('GET', 'json.php?name='+name, false);
xmlHttp.onreadystatechange = function () {
if (xmlHttp.readyState == 4) {
var resp = eval(xmlHttp.responseText);
saveVar.c = resp['id'];
if(vonNr.c && zuNr.c){
foundIDs();
}
}
};
xmlHttp.send(null);
Diese direkte Umwandlung des asynchronen Request in eine Synchronene ist nicht zulässig und funktioniert deshalb im Firefox (und vermutlich in anderen Browser die den Mozilla-Kern verwenden) nicht. Der korrekte asynchrone Aufruf sieht wie folgt aus:

xmlHttp.open('GET', 'json.php?name='+name, false);
xmlHttp.send(null);

var resp = eval(xmlHttp.responseText);
saveVar.c = resp['id'];
if(vonNr.c && zuNr.c){
foundIDs();
}
Wobei in diesem Fall die Methode send blockierend ist und auf die Antwort vom Server wartet. Der nachfolgende Code wird erst nach dem send eine Antwort erhalten hat ausgeführt.
Ähnliche Beiträge:
Parallel Request mit AJAX und PHP
Faster google maps with JSON
Web-Continuations - Technolgie 2007
"Defekte" for-in-Schleife in JavaScript
Assoziative Array nach Value sortieren
Comments (2)  Permalink

Flux basteln

Nach dem mein "CSI Tarantino"-Post kurzerhand für Gravantar-Tests missbraucht wurde, hat sich auch noch mein Blog-Admin zu Wort gemeldet. Auf seine Anregung hin habe ich heute ein wenig an meinem Flux-Design gebastelt.

Zuerst musste ich die "class" der Kommentare ändern, da diese gleich waren wie die des Posts.
    <xsl:template match="xhtml:div[@class='comments_not' or @class='comment']" mode="xhtml">
        <div class="post_comment">
            <xsl:apply-templates mode="xhtml"/>
        </div>
    </xsl:template>

Danach warf ich noch den ganzen Kommentar-Disclaimer in eine eigene Div-Box.
    <xsl:template match="xhtml:div[@class = 'comments']" mode="xhtml">
<div id="googleAd"/>
<div id="comment_form">
<h3 class="blog">comments</h3>
<xsl:apply-templates mode="xhtml"/>
<h3 class="blog">add a comment</h3>
<p> The Trackback URL to this comment is:<br/>
<xsl:value-of select="concat($webrootW,$collectionUri,'plugin=trackback(',substring-after(../@id,'entry'),').xml')"/>
</p>
<xsl:if test="not(../xhtml:div[@class='comments_not'])">
<p> This blog is <a href="http://www.gravatar.com/">gravatar</a> enabled.<br/>
Your email adress will never be published.<br/>
Comment spam will be deleted!</p>
</xsl:if>
</div>
</xsl:template>
Und dann hab ich den Gravantar noch ein wenig verkleinert (obwohl die grossen Bildchen haben mir ganz gut gefallen, da sah ich mit wem ich es zu tuen hatte):
{php:functionString('bx_plugins_blog_gravatar::getLink',text(),'50','aaaaaa')}
Danach das ganze ein bisschen mit CSS verschönert
img.blog_gravatar {
float: right;
margin: 0px 0px 10px 10px;
}
.post_comment, #comment_form, .wizard {
background-color: #8abfd1;
line-height: 18px;
margin: 5px 25px 15px 25px;
overflow:hidden;
}
.post_comment {
padding: 10px;
-moz-border-radius: 15px 15px 0px 0px;
}
#comment_form {
padding-top: 15px;
margin: 5px 25px 0px 25px;
}
.wizard{
margin: 0px 25px 15px 25px;
}
Die netten runden Ecken bleiben IE-Nutzern leider vorenthalten. Wer den IE benutzt ist auch selber schuld. Beim testen hab ich auch noch bemerkt das der IE "overflow: auto;" nicht richtig interpretiert und darum die Seite teilweise unschön verzieht. Desshalb liebe Internet-Explorer-Benutzer (falls es noch welche davon auf meinem Blog gibt, google sagt das es noch 35 Prozent sind), ladet einen anständigen Browser herunter z.B. unter www.ie7.com.
Ähnliche Beiträge:
Blog Update
Wo sind die Vögel geblieben (oder neues Design)
Trackback in Flux CMS
Frank der CSS Künstler
10 Ausreden um nicht zu bloggen
Comments (8)  Permalink

Ein Icon macht Geschichte

Das Feed Icon von Mozilla schreibt Geschichte. Das Icon wird als wohl eines der ersten von Open Source Entwicklern entworfenen Produkten offizielle in kommerzielle Produkte von Microsoft eingebunden werden. Laut Microsoft wird das kleine, orange Bildchen sowohl in den kommenden Internet Explorer 7 als auch in dem kommenden Outlook 12 einzug halten.

[via heise]
Ähnliche Beiträge:
Have a nice evening mister Gates!
Schweizer Innovationen kopieren
Synchroner Aufruf mit XMLHttpRequest in Firefox
Tschüss Bill!
Flux basteln
Comments (0)  Permalink
1-3/3