einsteiger-tutorial für erweiterungen / resize textarea

  • hallo!

    ich habe mir ein paar erweiterungen heruntergeladen, um hinter die geheimnisse der syntax zu kommen, bin aber nicht recht schlau geworden daraus.
    gibt es irgendwo eine doku / einsteiger-tutorial zum thema erweiterungen schreiben?

    konkret habe ich vor, textarea's am unteren rechten eck eine drag-markierung hinzuzufügen, mit dem man die oft sehr kleinen eingabefelder in boards und foren auf eine angenehme grösse "aufziehen" kann.
    dazu müssen nur beim ersten anclicken die attribute cols und rows durch style-angaben in pixel ersetzt werden.

    vielleicht kann mir dabei ja sogar jemand helfen?

    grüsse, raik

  • N'abend,
    ich habe zwar keine Ahnung vom Programmieren.
    Aber zu Deinem Thema einen Hinweis:
    mit Ctrl + Scrollen kann man im Firefox die Schriftgröße zoomen,
    funzt auch in den Eingabefeldern dieses Forums.
    MfG
    schnallgonz

    Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.0.8) Gecko/20061025 Firefox/1.5.0.8

  • http://www.orablogs.com/duffblog/archives/000536.html

    relativ gutes einsteiger tut, auch wenn's relativ simpel ist

    such dir am besten eine erweiterung die so klein wie möglich ist (vorallem sind "uralt" versionen zu empfehlen - also die 0.0.1 - weil da noch nichts unnötige sdrin ist.)

    nimm dir z.B. eine alte Version von Layerblock und ändere die so um wie du sie brauchst. das tutorial oben ist recht einfach zu lesen und vorallem sehr nützlich um die grundsyntax zu verstehen.
    Ansonsten wenn du was "einfaches" siehst was in einer extension vorkommt du es aber nicht hinbekommst, kannst du auch die entwickler fragen, die allermeisten antworten dir. natürlich darfs keine grundlegende frage sein... z.B. an den autor von focus last selected tab wie es funktioniert ;)

    oder frag mich einfach, ich habs auch erst kürzlich gelernt. es ist aber auch ganz nützlich gute html und javascript kentnisse zu haben.
    grüße

  • so, grundsätzlich funktioniert es inzwischen schon.
    ich hab schon festgestellt, dass bei verschiedenen seiten die positionierung noch nicht stimmt. das muss ich noch austesten.

    wenn ich aber mehrere seiten mit textareas im browser geöffnet habe, dann verlieren beim tabwechsel die schon geöffneten tabs ihre eventhandler, b.z.w. der zuletzt geladene tab reagiert teilweise auf events aus den anderen tabs.
    da habe ich wohl das prinzip der tabs noch nicht verstanden. anscheinend stellt nicht jeder tab eine eigenständige browserinstanz dar, so dass ich beim tabwechsel auch noch variablen neu zuweisen und werte sichern muss.

    kennt da jemand evtl. eine erweiterung, die sich auch mit dem quelltext der geladenen seiten beschäftigt und mehrere tabs handlen kann?

  • Du musst beim event handler nur den "Ort" angeben woher das kommt.
    Schlag mich tot... wo ist der link.

    Ich habe das selbst noch nicht ausprobiert weil ich bisher keine Zeit hatte, aber wenn ich mich recht erinnere ging das so.
    Ein eventhandler muss wie folgt aufgebaut sein:

    Code
    window.addEventListener('load', function(event) {MEINE_FUNKTION(event);}, true);

    die MEINE_FUNKTION muss dementsprechend die event Variable abfangen:

    Code
    function MEINE_FUNKTION(event)


    Statt z.B.
    window._content.frames[0].document.body
    müsste man dann schreiben
    event.frames[0].document.body

    Wenn das stimmt und ich mich nicht irre müsste dann genau das selbe passieren. Anonsten überprüf am besten mal die Variablen die ich zum Schluss genannt habe. Gut möglich dass window doch da bleiben muss oder so, da kann ich mich gut irren.
    Grüße :)

  • Zitat von Raik


    jetzt noch die positionierungsprobleme klären, dann kann ich das erste release rausbringen. :D

    Wie gehst du denn momentan bei der Positionierung vor, bzw. wie sehen diese Probleme denn aus?

    Grundsätzlich halte ich deine Erweiterung für eine gute Idee, momentan behelfe ich mir in solchen Fällen immer noch mit einen User-Stylesheet, aber alles, was das Leben einfacher macht, ist immer willkommen! ;)

  • Zitat von Raik


    ...konkret habe ich vor, textarea's am unteren rechten eck eine drag-markierung hinzuzufügen...

    XBL?

  • Zitat von ReinekeFux

    Wie gehst du denn momentan bei der Positionierung vor, bzw. wie sehen diese Probleme denn aus?

    wenn die umgebenden tabellen prozentuale breitenangaben haben, verändert sich die grösse der textarea zwar um den gewünschten betrag, sie verschiebt sich aber innerhalb der seite, wodurch der cursor nicht mehr auf der linken, oder unteren kante positioniert ist. ist nen schönheitsfehler.
    desgleichen, wenn über/neben der textarea in der tabellenzelle noch text steht, entstehen dadurch berechnungsfehler für die positionierung. auch nen schönheitsfehler.

    Zitat von 4711

    XBL?

    du meinst, es wäre möglich, direkt das element "textarea" des browsers zu erweitern?
    wäre natürlich noch eleganter. gibts dazu beispiele oder ähnliche erweiterungen?

  • also nach dem, was ich bisher herausgefunden habe, lässt sich da mit xbl/xul nichts machen, weil das nur für die programmoberfläche dient.
    html-elemente sind extra definiert.
    ich werde nochmal mit -moz-binding im userstylesheet herumexperimentieren, aber ich fürchte, das ist auch ne sackgasse.

    gibt es eigentlich einen unterschied dabei, ob ich das script als extension ausführe, oder es per dom in die eigentliche html-seite einhänge (wegen der verarbeitungspriorität durch den interpreter und der kollision mit variablen aus den scripten der geladenen seite) ?

    mit dem dom-inspektor habe ich herausgefunden, dass die einzelnen tabpanels im tabbrowser eine eindeutige id (z.b.: panel11101090917046) haben.
    wenn ich wüsste, wie ich auf die zugreifen kann, könnte ich damit die weiter oben im tread beschriebenen unterscheidungsprobleme lösen.

  • Zitat von Raik

    gibt es eigentlich einen unterschied dabei, ob ich das script als extension ausführe, oder es per dom in die eigentliche html-seite einhänge (wegen der verarbeitungspriorität durch den interpreter und der kollision mit variablen aus den scripten der geladenen seite) ?


    Natürlich macht das einen Unterschied! Die Erweiterung darf alles, die Seite nur das, was der User ihr erlaubt, im schlimmsten Fall gar kein JavaScript!

    zu den Tabs: vielleicht hilft dir http://kb.mozillazine.org/Category:Examp…wser.3E_related?

  • Zitat von Raik


    ich werde nochmal mit -moz-binding im userstylesheet herumexperimentieren, aber ich fürchte, das ist auch ne sackgasse.


    Wieso Sackgasse?

    CSS
    textarea {
          -moz-binding: url("chrome://ext/content/ext.xml#extBinding") !important;
    }

    Wenigstens kann man kontrollieren, wann was erstellt wird...
    Für Fx 1.0 ist es erforderlich, das Ganze in die "userContent.css" einzutragen.

    Mit Fx 1.1 kann man das eleganter erledigen:

    Ich hab das alles nicht ausprobiert; aber rein theoretisch...

    Zitat von Raik


    mit dem dom-inspektor habe ich herausgefunden, dass die einzelnen tabpanels im tabbrowser eine eindeutige id (z.b.: panel11101090917046) haben.

    Ohne Erweiterung(en)?

  • ausprobiert und als ergebnis werden textareas garnicht mehr dargestellt.
    es kommen auch keine alert-meldungen.

    die id's sind tatsächlich von irgendeiner erweiterung.
    haben mich aber auf eine idee gebracht:
    mit new Date.getTime();
    kann ich mir selber ne eindeutige id beim laden der seite erstellen und so eine unterscheidung treffen.

    der eine fehler bezügl. positionierung ist auch gefixt, nur bei umgebenden tabellen ohne feste breite verschiebt sich die textarea noch beim resizen, so dass der cursor nicht mehr über dem rand b.z.w. der ecke steht.

  • fuer phpBB foren scheints im profil sowie beim posten zu funktionieren. hab aber bei vBulletin boards (3dcenter.de) und einigen fremden (msfn.org) keine aenderung. ich hab zwar noch nicht den source angeschaut, aber ich denke mal ist auch global auf saemtliche textarea's machbar oder? ansonsten kann man mit der 0.1 schonmal brauchbar die signatur bearbeiten, was ich frueher immer in nem extra editor gemacht habe und dann in das minifeld kopierte *g*

    bc