Seite 274 von 348 ErsteErste ... 174224264270271272273274275276277278284324 ... LetzteLetzte
Ergebnis 4.096 bis 4.110 von 5215

Thema: Unsere Forensoftware - Was ist kaputt, was wird repariert?

  1. #4096
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    @Shakka:

    Aufgrund der Doki Doki Literature Club-Story habe ich ein kleines Skript geschrieben, dass beim Druck auf [Enter] den nächsten Anhang einer Story genau an die Position verschiebt an der das (oberste) jetzige Bild zu sehen ist.
    Das ist dort besonders nützlich, da sich meistens nur ein kleiner Ausschnitt des Bildes ändert.

    Vielleicht ist das nützlich genug, um es allgemein ins Forum einzubauen?!


    Edit: Rückwärts springen mit Shift+Enter ergänzt und zum Test es als FF-Addon angehängt.

    Wer es ausprobieren möchte und FF/Chrome nutzt: Ich habe ein Zip für ein Mini-Addon angehängt. Das kann man entpacken und dann entweder über 'about:debugging' (Firefox) oder Erweiterungen>Entwickermodus (Chrome) laden.
    Angehängte Dateien Angehängte Dateien
    Geändert von Ramkhamhaeng (21. Januar 2018 um 18:48 Uhr)

  2. #4097
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Falls es mal jemand ausprobieren will oder selber ein Skript fürs Forum schreiben will und eine Vorlage braucht:
    Ich habe das Skript jetzt noch als Mini-Addon im vorherigen Beitrag eingefügt.

  3. #4098
    Administrator
    Registriert seit
    20.08.04
    Beiträge
    8.965
    Das kann ich leicht einbauen.
    Wen ich das auf showthread.php beschränke, hat das dann ungewünschte Nebeneffekte?
    Im Prinzip braucht man Enter nur bei der Suchzeile. Da ist es egal, wenn ausversehen gescrollt wird.
    Verstand op nul, frituur op 180.

  4. #4099
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Zitat Zitat von Shakka Beitrag anzeigen
    Das kann ich leicht einbauen.
    Wen ich das auf showthread.php beschränke, hat das dann ungewünschte Nebeneffekte?
    Im Prinzip braucht man Enter nur bei der Suchzeile. Da ist es egal, wenn ausversehen gescrollt wird.
    Ich habe es lokal auch auf showthread.php beschränkt. Das sollte keinen Nebeneffekt aufweisen.
    Bei der Taste habe ich nur Enter/Shift+Enter gewählt, weil mir da am wenigsten Kollisionen vorstellen kann. Einen triftigen Grund gibt es nicht. Falls du eine andere Taste bevorzugst, nur zu

    Wenn der Focus in einem Eingabefeld ist, sollte Enter nicht an den Handler weitergeleitet werden
    Außerdem passiert nur etwas, wenn auch ein Bild im Viewport sichtbar ist. Das ist Absicht, aber könnte auch zu Verwunderung beim Benutzer führen. Evtl. kann man das Verhalten noch verbessern.

  5. #4100
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Ich hab noch nicht wirklich verstanden, was das macht. Kannst Du das nochmal für Dumme anhand eines Beispiels erklären, bitte
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  6. #4101
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Gehen wir davon aus, dass du eine Story im Forum mit sehr vielen Screenshots liest und es ist auf dem Monitor ein Bild zu sehen.
    Drückst du nach dem Einbau des Skripts auf "Enter" wird so gescrollt, dass das nächste Bild der Story genau an der Stelle des jetzigen Bildes platziert wird. Das empfinde ich beim Lesen sehr angenehm und entspricht etwas dem Verhalten, was ich, in Bildlastigen Stories, per Scrollen manuell erreichen will.

    Sind die Bilder sehr ähnlich, reagiert das Auge auch sofort auf die unterschiedlichen Stellen. Das ist sogar ein berühmtes Verfahren bei Astronomen (komme gerade nicht auf den Begriff^^)
    Edit: Ah, das ist der Blinkkomperator
    Geändert von Ramkhamhaeng (21. Januar 2018 um 23:03 Uhr)

  7. #4102
    Macht Musik Avatar von Peregrin_Tooc
    Registriert seit
    21.05.05
    Ort
    St. Ingbert
    Beiträge
    11.144
    Es geht ums Lesen

    Ich dachte ans Schreiben
    Zitat Zitat von Leonard Bernstein
    This will be our reply to violence:
    to make music more intensely,
    more beautifully,
    more devotedly than ever before.
    Meine Stories:
    Civ VI aus der Sicht von Civ IV BTS, englischer Weltraumsieg auf König
    Der Erste Kaiser wieder aufgenommen

  8. #4103
    Administrator
    Registriert seit
    20.08.04
    Beiträge
    8.965
    Ich habe das Script nun eingebunden.
    Wenn es nicht direkt verfügbar ist, die Seite mit Strg+F5 neu laden.


    am besten hier ausprobieren: https://www.civforum.de/showthread.p...ei%DFen/page10
    Verstand op nul, frituur op 180.

  9. #4104

  10. #4105
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Hm, ich habe leider nicht beachtet, dass nur eine der Attachment-Varianten beachtet wird.
    Außerdem haben die Bilder-Tags nicht mehr die Property „title="Bild"“, die gestern noch da war?!

    Test.... (Beitrag wird später editiert)
    Bild
    Bild

  11. #4106
    Civ4 BASE Coder Avatar von rucivfan
    Registriert seit
    10.07.11
    Ort
    Antarktika
    Beiträge
    19.016
    Auf Seite 1 der Doki Doki Story muss man immer ein müh runter scrollen, damit enter zum nächsten Bild springt. Auf Seite 10 ist das nicht notwendig.
    Geändert von rucivfan (22. Januar 2018 um 21:35 Uhr)

  12. #4107
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    @Shakka:

    Eine Verbesserung bei der Auswahl der Bilder (passt für ATT, ATT2 und IMG). Aber warte lieber noch ab. Rucivfans Kommentar deutet auf nen weiteren notwendigen Fix hin. (Bananensoftware )
    Code:
      var attachments = document.querySelectorAll('img[src*=attachment][title=Bild]');
      var attachments = document.querySelectorAll('div.postbody * img[src*=attachment]');
    Zitat Zitat von rucivfan Beitrag anzeigen
    Auf Seite 1 der Doki Doki Story muss immer ein müh runter scrollen, damit enter zum nächsten Bild springt. Auf Seite 10 ist das nicht notwendig.
    Das scheint an Bildern in Spoilern zu liegen.

  13. #4108
    Administrator
    Registriert seit
    20.08.04
    Beiträge
    8.965
    Zitat Zitat von Ramkhamhaeng Beitrag anzeigen
    Das scheint an Bildern in Spoilern zu liegen.
    Dann brauchen wir noch ein

    Code:
    :visible
    Verstand op nul, frituur op 180.

  14. #4109
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Hm, ein Einzeiler dafür wäre dann
    Code:
    var attachments = $(document.querySelectorAll('div.postbody * img[src*=attachment]')).filter(':visible');
    Dann müsste man die Funktion gen_list_of_attachments() aber bei jedem Event aufrufen, weil sich die Sichtbarkeit zwischendurch ändern kann (Klick auf den Spoiler-Button). Andererseits wird bei mir komischerweise die Funktion aber wirklich immer aufgerufen, weil die globale Variable, in der ich die Liste der Bilder speichere, immer wieder vergessen wird Ah nein, dass lag an einem Fehler.

    Die Entertaste wird übrigens doch noch bei einer anderen Funktion benutzt: Hat ein Button, z.B. beim Spoiler-Tag den Fokus wird, das Skript + Button-Event ausgefügt. (Lösung gefunden...)
    Geändert von Ramkhamhaeng (22. Januar 2018 um 22:28 Uhr)

  15. #4110
    ε•ω=1 Avatar von Ramkhamhaeng
    Registriert seit
    19.07.10
    Ort
    Aralkum
    Beiträge
    9.896
    Ok, die zwei Probleme mit der Spoiler-Button-Funktionalität sollten nun behoben sein. Hier noch mal der Code im ganzen, da diesmal mehr Zeilen geändert wurden. Auf globale Variablen wird jetzt verzichtet.

    Achtung Spoiler:
    Code:
    /* Jump to next image of 'vBulletin story thread'.
     * Default event is keypress of enter (event.which == 13).
     *
     * Requires jQuery...
     * */
    
    /* External interface. Call this for initialisation...
    */
    function next_image_init(){
    
      // Add hander [enter] keypress
      $(window).keypress(function( event ) {
        //console.log("E:" + event.which + ", " + event.target.tagName);
        if ( event.which == 13 && event.target instanceof HTMLBodyElement ) handler_goto_next_story_image(event.shiftKey);
      });
    }
    
    // =====================================================================
    /* Internal stuff */
    
    function gen_list_of_attachments(){
      /* Example code of valid images
       *
       Bild:
       <a href="attachment.php?attachmentid=649344" target="_blank"><img src="attachment.php?attachmentid=649344" alt="Bild" border="0" style="max-width:640px"/></a><br />
    
       * oder auch
       <a href="https://www.civforum.de/attachment.php?attachmentid=1635163" target="_blank">
       <img src="[...]attachment_009.jpeg" alt="Bild" style="max-width:100%" title="Bild" border="0">
       </a><br>
    
       Bild:
       <a href="attachment.php?attachmentid=649344" target="_blank"><img src="attachment.php?attachmentid=649344" alt="Bild" border="0" style="max-width:100%"/></a><br />
    
       [img]...[/img]:
       <img src="http://civforum.de/attachment.php?attachmentid=649344" border="0" alt="" />
       */
    
      var attachments = $(document.querySelectorAll('div.postbody * img[src*=attachment]')).filter(':visible');
      return attachments;
    }
    
    function get_top_image_of_view_range(story_images){
      var most_top = null;
      var pos_top = 100000000;
      var wh = $(window).height() + 1000; // Optional restriction by window height
    
      for( var i=0; i<story_images.length; i++){
        var el = story_images[i];
        var viewportOffset = el.getBoundingClientRect();
    
        //if( $(el).filter(':hidden').length > 0 ) continue;
    
        // these are relative to the viewport
        if( viewportOffset.top >= 0 && viewportOffset.top <= wh ){
          // Vertical position ok
          if( viewportOffset.top < pos_top){
            most_top = el;
            pos_top = viewportOffset.top;
            //console.log("Select "+i+" "+pos_top);
          }
        }
      }
      //console.log("Pos: "+pos_top);
      return most_top;
    }
    
    function get_next_image(story_images, current_image){
      /* Image lower than current image with minimal distance. */
    
      if( current_image === null ) current_image = get_top_image_of_view_range(story_images);
      if( current_image === null ){
        // No image complete in (vertical) viewport.
        return null;
      }
    
      var viewportOffsetCur = current_image.getBoundingClientRect();
      var ret = null;
      var dist = 100000000;
      for( var i=0; i<story_images.length; i++){
        var el = story_images[i];
        var viewportOffsetNext = el.getBoundingClientRect();
        if( current_image == el ) continue; // Required
        //if( $(el).filter(':hidden').length > 0 ) continue;
        if( viewportOffsetNext.top < viewportOffsetCur.top ) continue;
        if( viewportOffsetNext.top == viewportOffsetCur.top &&
            viewportOffsetNext.left <= viewportOffsetCur.left ) continue;
        if( viewportOffsetNext.top - viewportOffsetCur.top > dist ) continue;
        ret = el;
        dist = viewportOffsetNext.top - viewportOffsetCur.top;
        //console.log("Next select "+i+" "+dist);
      }
    
      return ret;
    }
    
    function get_prev_image(story_images, current_image){
      /* Image higher than current image with minimal distance. */
    
      if( current_image === null ) current_image = get_top_image_of_view_range(story_images);
      if( current_image === null ){
        // No image complete in (vertical) viewport.
        return null;
      }
    
      var viewportOffsetCur = current_image.getBoundingClientRect();
      var ret = null;
      var dist = -100000000;
      for( var i=0; i<story_images.length; i++){
        var el = story_images[i];
        var viewportOffsetPrev = el.getBoundingClientRect();
        if( current_image == el ) continue; // Required
        //if( $(el).filter(':hidden').length > 0 ) continue;
        if( viewportOffsetPrev.top > viewportOffsetCur.top ) continue;
        if( viewportOffsetPrev.top == viewportOffsetCur.top &&
            viewportOffsetPrev.left >= viewportOffsetCur.left ) continue;
        if( viewportOffsetPrev.top - viewportOffsetCur.top < dist ) continue;
        ret = el;
        dist = viewportOffsetPrev.top - viewportOffsetCur.top;
        //console.log("Next select "+i+" "+dist);
      }
    
      return ret;
    }
    
    function scroll_to_next_image(cur, next){
      /* Move view from top left corner of 'cur' to 'next' image.
      */
    
      if( cur === null || next === null ){
        console.log("(scroll_to_next_image) Hey, one of the images is null.");
        return;
      }
    
      var viewportOffsetCur = cur.getBoundingClientRect();
      var viewportOffsetNext = next.getBoundingClientRect();
      var dx = viewportOffsetNext.left - viewportOffsetCur.left;
      var dy = viewportOffsetNext.top - viewportOffsetCur.top;
      //console.log("Scroll by... " + dx + ", " + dy);
      window.scrollBy(dx, dy);
    }
    
    function handler_goto_next_story_image(bReverse){
      /* Search next image and scroll to it.
       *
       */
      var story_images = gen_list_of_attachments();
      var current_top_image = get_top_image_of_view_range(story_images);
    
      if( bReverse ){
        next_top_image = get_prev_image(story_images, current_top_image);
      }else{
        next_top_image = get_next_image(story_images, current_top_image);
      }
      if( next_top_image !== null ){
        scroll_to_next_image(current_top_image, next_top_image);
        //current_top_image = next_top_image;
      }
    }

Seite 274 von 348 ErsteErste ... 174224264270271272273274275276277278284324 ... LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •