Facebookchat - Drag 'n Drop?

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von timi257.

    Facebookchat - Drag 'n Drop?

    Hallo Forum.
    Aus gegebenem Anlass wollte ein einmal fragen, ob jemand von euch eine Möglichkeit kennt (Greasemonkey-Script?), um die Chat-Liste in Facebook per Drag 'n Drop verschieben zu können, da ich eine gewisse "Ordnung" in meinen Chats habe und wenn ich einen aus Versehen schließe, würde ich ihn gerne einfach per Drag and Drop zurückziehen können.

    Wenn keiner von euch soetwas kennt, wüsste jemand, wie man das machen könnte als Greasemonkey-Script?
    Ich habe mir mal mit Firebug den Facebook-Chat angeschaut und finde es sehr schwer, dort etwas mit Greasemonkey zu machen :/ - ich bin damit eh noch nicht sehr erfahren...
    ... Aber lernbereit :)
    Ich möchte jetzt nicht unbedingt einen neuen Thread eröffnen, deshalb wollte ich noch einmal hier fragen:
    Gibt es niemanden, der sich genug mit JavaScript auskennt, um einen Code für DIV-Drag and Drop zu schreiben?
    Oder meint ihr, es gibt fertige Drag and Drop-Codes? Bisher habe ich nur welche zum freien verschieben gefunden.. Keine, wo man einfach die DIV-Positionen "tauschen" kann :(
    Was genau suchst du? Ich verstehe dein Problem nicht. Mit dem neuen Facebookdesign sollte sich dein Problem sowieso erledigt haben.
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    Ich denke er meint das verschieben von offenen Chatfenstern nicht die Leute in der Liste.

    Das problem dürfte sein vernünftig drauf zuzugreifen, da sicher einige dynamische Handler fürs Click usw. gesetzt werden.
    Fertige Drag&Drop dürften dort nur schwer anwendbar sein. Weil zum einen laufen die alle mit einem Framework wie Mootools, Prototype oder jQuery. Dieses FW müsstest du auch erstmal in dein Greasemonkey reinbringen. Sowas selbst zu schreiben dürfte schon schwierig sein, mit Mauskoordinaten auslesen, die Div dann dynamisch zu positionieren könnte ggf. mit dem Styling und CSS Zuweisung durhc FB kollidieren usw.
    Ich habe mir FB auch schonmal genauer angesehen weil ich rausfinden wollte welche JS Funktion bei z.B. "Gefällt mir" ausgeführt wird, aber in dem Link sieht man nichts. Weder einen Link noch ein Inline onclick Event, somit bleibt nur das AddHandler durch JS, was im DOM von FF nicht angezeigt wird. Alles in allem sehr sher kompliziert.
    Jap, dem kann ich zustimmen. GreaseMonkey Scripts für Facebook zu schreiben ist schier unmöglich (man siehe sich mal den Quelltext an). Mehr JavaScript als HTML ...

    Gruß
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    Naja.. Einfache Sachen wie header ändern und so weiter ist schon machbar..
    Und ihr meint, dass man nicht alle divs im Div "fbDockChatTabSlider", die Class="fbNub fbDockChatTab user active " oder Class="fbNub fbDockChatTab user disabled " haben, per Drag 'n Drop untereinander austauschen kann? - weil eigentlich müsste man ja nur die "Reihenfolge" der Divs im HTML-Code ändern, oder nicht?
    Nun mtim Header ändern kommst du aber nicht weit lol

    Das Problem dürfte sein das Drag'n Drop zu realisiseren, du musst die Positonen einer Div ändern also top und left angaben entsprechend der Maus, dann müsstest du die anderen Div Elemente identifizieren wo die maus auch gerade drüber bzw. zwischen is, alle Divs auf der linken Seite davon um die breite des angefassten Divs verschieben und beim loslassen der Maustaste das Div dort einfügen.

    Probiere erstmal das ohne FB zu programmieren. SELBSTSTÄDNIG ... ohne ein Framework. Wenn das hinbekommen hast kannste dich evlt. an FB wagen.
    jaa, ich weiß ^^

    Okay - ich glaub', das werde ich versuchen..
    Aber eine Frage hätte ich noch. Meinst du, es wär einfacher, wenn man einen "nach links" und einen "nach rechts"-Button machen würde? - weil man damit das komplizierte Mausposition-Abfragen usw. umgehehn könnte?
    was meinst du?
    Okay - also ich habe jetzt auf jeden Fall einmal geschafft, die Divs zu tauschen via Greasemonkey (ich tausche einfach die element.innerHTMLs aus).
    Aber wüsstest du vielleicht noch, wie ich es jetzt mit dem markierten DIV machen könnte? Bei facebook ist das ja "einfach" (in grooßen Anführungszeichen), weil das offene Chat-Fenster ja dann die Klasse "fbNub fbDockChatTab user active openToggler " hat...
    Aber wie könnte ich das auf einer Test-Seite symbolisieren? - Und meine nächste Frage (bzw. Problem) hätte jemand eine Idee, wie ich die Reihenfolge der Tabs abspeichern soll? - In Grasemonkey kann man ja Werte speichern, aber was speichere ich da? - die Reihenfolge der Benutzer-IDs? (Das ist jetzt aber glaube ich schon einen Schritt zu weit gedacht - ich muss erst einmal das verschieben überhaupt schaffen :/ )

    Edit:
    achso - meine "Test-Seite" ist diese hier.
    Und mein Greasemonkey-Script sieht mehr oder weniger so aus: (das ist seehr schlecht geschrieben, oder? - wie könnte man es noch machen?)

    Quellcode

    1. // ==UserScript==
    2. // @name Verschieben_Test
    3. // @namespace test
    4. // @include http://timi257.square7.ch/verschieben_test/*
    5. // ==/UserScript==
    6. var dieganzenElements, esElement;
    7. dieganzenElements = document.getElementsByTagName('div');
    8. for (var i = 0; i < dieganzenElements.length; i++) {
    9. esElement = dieganzenElements[i];
    10. if (i == 1) {
    11. var testeins = dieganzenElements[i-1].innerHTML;
    12. alert(testeins);
    13. var testzwei = dieganzenElements[i].innerHTML;
    14. alert(testzwei);
    15. dieganzenElements[i-1].innerHTML = testzwei;
    16. dieganzenElements[i].innerHTML = testeins;
    17. }
    18. }
    Hey - Danke ;)
    Damit sieht das ganze schon sauberer aus :D
    Aber hätte nicht jemand eine Idee, wie ich das mit dem markieren der DIVs machen kann? - um sie dann zu verschieben?
    Weil wenn ich das habe kann ich es eigentlich mehr oder weniger für Facebook übernehmen.. mit ein wenig Arbeit... ^^

    Edit:
    und weiß jemand, ob es einen Befehl wie

    Quellcode

    1. document.getElementByID('fbDockChatTabs').getElementsByTagName('div');


    gibt? - der Alle Childs eines Elements mit diesem TagName auflistet?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „timi257“ ()

    Ja - dachte ich, getan zu haben...
    und da ich nur die direkten Childs haben wollte, wäre ja

    Quellcode

    1. document.getElementById('fbDockChatTabs').childNodes
    das richtige... Warum allerdings funktioniert

    Quellcode

    1. var dieganzenElements, esElement;
    2. dieganzenElements = document.getElementById('fbDockChatTabs').childNodes;
    3. for (var i = 0; i < dieganzenElements.length; i++) {
    4. esElement = dieganzenElements[i];
    5. alert(EsElement);
    6. }


    bei mir nicht? - ich gehe doch eigentlich in einer Schleife alle Childs von "fbDockChatTabs" durch, oder?
    Hm.. also nichtmal das funktioniert bei mir.. Außerdem wäre die childNodes-Methode bei für mich besser, da ich ja nur DIREKTE childs haben möchte...

    Funktioniert der Code von oben (ggf auch mit getElementsByTagName) bei euch? - bei mir kommt einfach kein alert...