[XUL] immer sichtbares browser-overlay?

  • hallo,

    mein erster post und gleich eine frage. ich hoffe, jemand kann mir weiterhelfen.

    ich habe eine extension geschrieben, die der momentan angezeigten seite - bei klick auf einen button in der status-leiste - einen div-layer mit css-formatierung hinzufügt. das funktioniert soweit prächtig, der layer verschwindet aber natürlich a) bei aufruf einer neuen seite und b) beim öffnen eines neuen tab.

    ist es möglich, diesen div-layer, oder meinetwegen auch ein xul-element, in allen tabs und nach reload-einer seite, über/auf dem html-content fenster anzuzeigen?

    irgendwie stehe ich da auf dem schlauch. oder geht das vielleicht garnicht?

    danke für eure ideen
    stefan

  • der neue Auto-Scroll-Code von Firefox benutzt dazu ein Popup. Das geht aber natürlich zu, wenn der Nutzer irgendwo hinklickt und in zumindest vor Firefox 3 könnte es schwierig werden, Crashs zu vermeiden.

    Je nachdem, was du machen willst, könntest du also vielleicht auch ein neues Fenster (ohne Titelleiste und die ganzen Dinge) und mit den Features "dependent" und "alwaysRaised", damit das Fenster über dem Browserfenster ist und wenn dieses geschlossen wird, auch verschwindet.

    Wenn das auch Probleme macht, wirst du wohl jeden Tab ändern müssen, aber das ist natürlich bescheuert. Vor allem weil dann das CSS und JavaScript der Seite Probleme machen kann.

  • ja, alle tabs zu ändern habe ich auch schon überlegt, aber das ist wohl zuviel des guten. mein div-layer ist halb-transparent und lässt die aktuelle seite durchscheinen. ich denke, sowas kann ich mit einem neuen window auch nicht ohne weiteres realisieren.

  • das schliessen wäre nicht das problem. aber wie man dieses fenster an die eigentliche content-fläche "attached" ist die frage. denn sobald man die browsergröße ändert, ihn minimiert oder oder oder, müsste sich das transparente fenster ja danach richten und ebenfalls skalieren oder ähnliches. dazu kommt, dass das fenster in der taskleiste erscheint.

    ich glaube ich muss mich von der idee trennen und es wirklich nur pro seite und load anzeigen. alles andere erscheint mir mit den momentanen ansätzen zu komplex für meinen zweck.

    danke für deine tipps, dr. evil. wenn dir noch was einfällt sag bescheid. wenn ich noch was handliches finde werde ich es hier posten.

  • Zitat von deesigns

    das schliessen wäre nicht das problem. aber wie man dieses fenster an die eigentliche content-fläche "attached" ist die frage. denn sobald man die browsergröße ändert, ihn minimiert oder oder oder, müsste sich das transparente fenster ja danach richten und ebenfalls skalieren oder ähnliches. dazu kommt, dass das fenster in der taskleiste erscheint.

    das ist nicht so das riesige Problem. Schau dir mal die Features von window.open an:
    http://developer.mozilla.org/en/docs/DOM:wi…d_size_features

    dependent sollte die meisten Probleme außer die Größenänderung lösen. Und auf die kann man mit einem Event-Handler reagieren:

    Code
    window.addEventListener("resize", function(evt) {
      // tu irgendwas
    }, false);

    Nur ein Event, dass beim Verschieben des Fensters ausgelöst wird, konnte ich jetzt leider nicht finden. Aber wenn es da tatsächlich nichts gibt, kann man im Zweifelsfall immer noch mit setInterval alle X Millisekunden prüfen, ob das Fenster noch da ist, wo es sein sollte.