webconsul

the best webconsul(ting)

JSXGraph WordPress Plugin Update

Sie sind hier: Startseite » Archiv für prototype

Wie im vorherigen Post erläutert gab es letzte Woche ein neues JSXGraph Release und somit musste das WordPress Plugin dazu auch aktualisiert werden.

Die Gelegenheit habe ich genutzt um folgende Änderungen einzubauen:
1.) Jetzt werden die vorhandenen Bibliotheksdateien im Pluginverzeichnis überprüft. Vorher wurde von dem Skript aus der Pfad überprüft, was zwangsläufig zu einem Fehler führt.
Dazu als Tipp an alle: bei einem WordPress Plugin immer die Pfade aus dem “root-Verzeichnis” aus überprüfen, zum Beispiel: if(file_exists(‘wp-content/plugins/jsxgraph/jsxgraph.css’))

2.) In Abhängigkeit bereits geladener Javascript-Bibliotheken wie prototype oder jquery wird jetzt keine Bibliothek geladen oder prototype.
Der Code dazu sieht folgendermaßen aus:

if(
!(typeof Prototype != 'undefined' && Prototype.Version)
&&
!(typeof jQuery != 'undefined' && jQuery.fn.jquery)
) {
var scr = document.createElement('script');
scr.src = '". get_bloginfo("wpurl") ."/wp-includes/js/prototype.js';
document.getElementsByTagName('head')[0].appendChild(scr);
}

D.h. falls weder prototype noch jquery bekannt sind, wird das mit dem Blog ausgelieferte prototype dynamisch nachgeladen.

Gibt es dazu evtl. eine elegantere Möglichkeit?

Der Googlebot und JavaScript

Sie sind hier: Startseite » Archiv für prototype

Dem Googlebot wird nachgesagt alles zu parsen, sogar vor JavaScript und Flash soll er nicht halt machen.
Da hat mich interessiert, ob der Googlebot das wirklich kann.

Um herauszufinden, ob das klappt, habe ich kurzerhand ein kleines Testskript geschrieben, welches die Prototype JS-Library verwendet um einen einfachen Ajax.Request zu machen:

<script type="text/javascript" language="javascript" src="prototype.js"></script>
<script type="text/javascript" language="javascript">
var r = new Ajax.Request('searchtest.php?r=r', {method: 'get', onSuccess: function(t) {
          document.body.innerHTML = t.responseText;
      }});
</script>

Bei erfolgreichem Abfragen soll einfach der komplette HTML-Inhalt im “body” mit dem zurückgelieferten Inhalten ersetzt werden, die schlimmstenfalls zu 100% abweichen (wie in meinem Test).

Das Resultat ist, dass der Googlebot die Seiten schön indiziert und parst, allerdings eben genau diese Hürde nicht nimmt oder nicht schafft. Die Datei prototype.js hat er laut den Serverlogs nicht geladen und auch der “neue Inhalt” wird in der Suche nicht gefunden.
Das heißt, der Googlebot indiziert bei interaktiven Seiten den Quelltext und kann so mit anderen Inhalten manipuliert werden.

qed ;-)