I\'ve been trying at this for a long time now, and no good results.
var myObserver = {
observe: function(subject, topic, data)
{
if (topic == \"h
While testing something I created a condensed version (see this gist) of the channel replacement logic mentioned in other answers.
The general idea seems to be to transfer all critical properties over to the new channel, remove callbacks from the old channel so manipulations won't trip up the page load and then shutting the old channel down.
With some modifications one can change the page URI for document loads or leave it as-is.
Warning: That was just a quick hack to get a few pages loading, I have not tested it in depth and it will probably break for some cases. I suspect there are reasons why the HTTPS Everywhere is more complex.