HTTP im Firefox mitschneiden

Nachdem ich fast immer “Live HTTP Headers” benutzt hatte, kam ich jetzt mit der FF 3.6 Version in Schwierigkeiten. Die Erweiterung ist nicht kompatibel. Das Problem könnte man zwar auch relativ leicht lösen (einfach die kompatiblen Versionen anpassen in der Erweiterung), aber ich nehm sowas gerne als Anlass mal nach was Neuem zu suchen :)

Lösung: HttpFox. Gefällt mir. Macht genau das was ich brauch :)

Scienta ZF Debug Bar

Der Firefox und seine diversen Erweiterungen. Es gibt mit Firebug und FirePHP schon exzellente Tools zur Entwicklung mit PHP und jetzt gibt es noch ein Weiteres:

Scienta ZF Debug Bar

Der aufmerksame Leser hat hier ZF entdeckt und, ja tatsächlich, hier ist die Rede vom Zend Framework.

2009scienta-debugbar.png

Die Toolbar erlaubt es einem die SQL-Queries, die Page-Render-Zeit, die Version des ZF und den Speicherverbrauch anzuzeigen. Und noch ein paar Gimmicks mehr, dazu verweise ich aber einfach auf den Original-Blogeintrag.

Quelle: http://jokke.dk/blog/2009/01/introducing_the_scienta_zf_debug_bar

Firefox-Addons …

… die ich benutze. Interessiert vermutlich niemanden ausser mich, aber da ich gestern gemerkt habe wie mir ein paar fehlen auf meinem Ersatzlaptop, muss ich die hier mal niederschreiben. Eigentlich bin ich meisten Minimalist was sowas (Plugins/Addons) angeht, aber ein paar sind einfach gut :)

  • Adblock Plus, blockt lästige Werbung. Nutze ich erst seit ein paar Wochen, aber erfüllt auch völlig ohne Konfiguration meinerseits seinen Zweck.
  • Add to Search Bar ,Rechts oben hat man ja eh die Suchleiste, meist mit Google vorbelegt. Solange die Webseiten nicht von sich aus alle einen “OpenSearch”-Link anbieten, muss man auf dieses exzellente Addon zurückgreifen. Rechtsklick in eine beliebige Suchbox und “Zur Suchleiste hinzufügen”. Fertig.
  • Download Statusbar, macht das der Downloadmanager besser aussieht :) Eigentlich brutal unwichtig, aber nett.
  • Fireshot, macht hübsche Bilder von Webseiten. Ausserdem kann man gleich Pfeile malen und auf Sachen hinweisen. Exzellent. Hat aber mit manchen Flash-Seiten Probleme.
  • Web Developer, eigentlich nur “sinnvoll” für Leute die Webdesign machen und Webseiten “entwickeln”. Aber da unverzichtbar.
  • Quick Locale Switcher, Wie der Name schon sagt: Schnell die Sprache wechseln. *click* English *click* Deutsch *click* Suaheli .. ähh, wo muss ich jetz hinklicken?  *such*

OpenXML als HTML

Sowas find ich klasse. Microsoft stellt ein Firefox-Addon zur Verfügung mit dem man OpenXML-Dokumente als HTML anschauen kann. Sehr praktisch wenn man gerade kein Microsoft Office zur Hand hat, oder auch kein Openoffice. Einfach das Firefox-Addon installieren, die Datei auf den Firefox ziehen und fertig. Klasse.

MochiTest-Lite

Just a reminder to myself, because I want to try that extension:

Mochitest is a unit testing framework created by contributors to Mozilla projects. Mochitest is based on MochiKit , the incredibly useful Javascript library. MochiKit as the basis for writing unit tests has been proven very useful to developing Mozilla applications because of the thick layers of Javscript code in applications like Firefox.

What then, is Mochitest-Lite?
Mochitest, as it is used at Mozilla, requires Python to drive the command line interface, and automate the testing. Python is a very powerful tool for this purpose because, along with automation, it can overwrite and then rewrite configuration files like manifests and preferences, all while having a minimal impact on the application being tested. Mochitest also uses a client-server architecture to serve test documents to the application being tested. On top of that, an application needs to be built with the Mozilla build system to work with Mochitest.

This makes sense for large applications like Firefox, but what about a unit testing framework for developers of small XULrunner applications and extensions for existing Mozilla applications? These developers have different requirements. Mochitest-Lite is a way to get the same test writing tools and automation without the overhead of running Mochitest the same way it is used to test Mozilla code.

Javascript aus FF-Erweiterung in der Webseite benutzen

Langer Titel, kurzer Blogeintrag. Ich bastel gerade daran rum, diverse Javascript-Funktionen innerhalb der HTML-Seite zu benutzen. Das kann ziemlich hässlich werden:

var head = this.getContentDocument().getElementsByTagName("head")[0];
var script = this.getContentDocument().createElement("script");
var showImage = this.getContentDocument().createTextNode("function showImage(id) { "
		 + "var image = document.getElementById(id);"
		 + "image.style.display = \"inline\"; "
		 + "image.parentNode.previousSibling.addEventListener(\"mouseout\",
		 function() {"
		 + "window.setTimeout(fadeImage, 1500, id);"
		 + "}, false)"
		 + "}");
script.appendChild(showImage);
head.appendChild(script);

Alles doppelt escapen und so. Kein Spass. Hässlich zum Lesen. Lösung:

var head = this.getContentDocument().getElementsByTagName("head")[0];
var script = this.getContentDocument().createElement("script");
script.setAttribute("src", "resource://jslibs/foobar.js");
script.setAttribute("type", "text/javascript");
head.appendChild(script);

Nix spektakuläres, aber innerhalb der Datei “foobar.js” kann man jetzt ‘ganz normales’ Javascript schreiben. Ich freu mich über sowas ;)

Wie man das Laden einer Seite abfängt …

Ohne Witz. Seit 4 Wochen doktor ich daran rum und ENDLICH hab ich den richtigen (bzw. funktionellen) Weg gefunden wie man es macht:
overlay.xul:

<overlay id="extensionId" 
    xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <script type="application/x-javascript" src="chrome://extensionId/content/myJs.js"/>
</overlay>
</pre>
<strong>myJs.js:</strong>
<pre lang="javascript">
Components.utils.import("resource://jslibs/test.js");
function startupWrapper() {
	var appcontent = document.getElementById("appcontent"); // browser
	if (appcontent) {
		appcontent.addEventListener("DOMContentLoaded", function() {
					justATest(getBrowser());
				}, true);
	}
}

test.js:

var EXPORTED_SYMBOLS = ["justATest"];
justATest = function(gBrowser) {
	var body = gBrowser.mCurrentBrowser.contentDocument.getElementsByTagName('body')[0];
}

Herzlichen Glückwunsch. Vorher hab ich “nur” auf DOMContentLoaded gehört, das hat mir dann aber beschert, dass meine Funktion pro XUL-Dokument aufgerufen wurde, also z.B. für die Web Developer Toolbar, die Locationbar, den Browser an sich und dann erst die Webseite. Vorher hab ich das kläglich mit

if (gBrowser.mCurrentBrowser.contentDocument.documentURI != "about:blank") {
  // do something
}

abbeholfen, aber das ist ja doof :) Jetzt gehts. Hooray