Anzeige:
Ergebnis 1 bis 10 von 10

Thema: Konqueror 3.5 und Bildwechsel

  1. #1
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Konqueror 3.5 und Bildwechsel

    Konqueror-Bug?
    Bei Ändern eines Bildes wird dessen Darstellung nicht upgedatet

    BS: gentoo (x86-64) 2.6.16.19
    KDE: 3.5.4
    Komponente: Konqueror
    Gilt für alle Konqueror 3.5-Varianten auf gentoo (x-86-64)!

    Beschreibung:
    Wird mit Javascript ein Bildwechsel durchgeführt, so wird die Darstellung des Bildes nicht upgedatet, wenn das Bild nicht in einem Bereich liegt, was den Event ausgelöst hat.

    Beispiel: Klick auf Bild rechts unten soll via Javascript/DOM ein Bild links oben ändern. Es kommt häufig vor, dass dann der korrekte Name des Bildes im Kontext-Menu angezeigt wird, aber das Bild selbst ist noch das vorige (Darstellung nicht upgedatet).

    Mit Neuzeichnen via Javascript ist nix zu machen, der Fehler liegt in der Grafikdarstellung selbst.

    Bild:

    Der Effekt bezieht sich auf den PC (rechts unten und) und Mitte oben.
    Angezeigt werden sollte ein PC mit hellem Bildschirm (pic_2a.gif), der Name erscheint auch korrekt im Kontenxtmenu, tatsächlich angezeigt wird ein PC mit dunklem Bildschirm (pic_2.gif), das Bild vor dem Updatezyklus.

    (Sieht aus wie Bug 111873 bei den Digicam-Developern)
    Eigentlich ganz einfach, wenn man's weiss!

  2. #2
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Ja das ist ein Bug und der ist bekannt. Ich kämpfe schon seit Wochen mit dem Problem und habe auch schon daran gedacht zu downgraden. Es Nervt Tierisch - Generell alle Dynamischen Renderings wie z.B. innerHTML etc. gehen nicht wenn man nur den CDATA Node neu Schreibt.
    PHP-Code:
    function XMLRequesteruomhge)
    {
       var 
    url unescape(u);
       var 
    xo INITXMLRequester();
       var 
    out '';


       if ( ! 
    is_moz )
          
    mh.innerHTML lng['PLEASEWAIT'];

       var 
    listener = function()
       {
          if ( 
    is_moz )
             
    dump("Content-Type: " xo.getResponseHeader("Content-Type") + "\n");

          switch( 
    xo.readyState ) {
             case 
    0:
                
    mh.innerHTML lng['AJAXWAITRESPONCE'];
             case 
    1:
                
    mh.innerHTML lng['AJAXDATASEND'];
             case 
    2:
                
    mh.innerHTML lng['AJAXWAITRESPONCE'];
             case 
    3:
                
    mh.innerHTML '';
                break;
             case 
    4:
                if ( 
    xo.status == 200 ) {
                   
    mh.innerHTML '';
                   var 
    da xo.responseText;
                   if( 
    da.length ) {
                      
    // alert( unescape( da ) + " " + ge );
                      
    if ( ) {
                         
    /** BUGFIX:KHTML 3.5.3 Konqueror need a event befor innerHTML! */
                         
    if ( ge.hasAttributes ge.style.display '';
                         
    ge.innerHTML = eval( unescapeda ) );
                      } else
                         
    ge.value = eval( unescapeda ) );
                   } else {
                         
    ge.innerHTML lng['AJAXEMPTYDATA'] + da;
                   }
                   
    /** BUGFIX:Opera need explicit to destroy XMLHttpRequest */
                   
    if ( is_opera )
                      
    xo.abort();

                } else if ( 
    xo.status == 403 ) {
                   
    mh.innerHTML lng['AJAXSERVERERROR'];
                }
          }
       }

       if ( 
    o.length >= ) {
          
    xo.open"POST"encodeURIurl ), true );
          
    xo.setRequestHeader'Content-Type''application/x-www-form-urlencoded' );
          
    xo.setRequestHeader'Accept-Charset''utf-8, unicode-1-1;q=0.8' );
          
    xo.setRequestHeader'Accept''text/plain, text/html, application/xhtml+xml' );
          
    xo.setRequestHeader'Content-Length'o.length );
          
    xo.onreadystatechange listener;
          
    xo.send);
       } else {
          
    alert(lng['MISSINGAJAX']);
       }
       return 
    false;

    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  3. #3
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    na, habe gerade einen Patsch ausprobiert, der zumindest bei den Settings:
    "Zwischenspeicher verwenden, wenn möglich" (und lokal) zu greifen scheint:

    Code:
    function zeige(nr) 
    { document.images['i'+nr].src=leer.src; // Konqueror Patsch, die faule Sau!
      document.images['i'+nr].src=ima[f[nr]].src;
    }
    Vorher wird kurz ein komplett anderes Bild geladen.

    Weitere Erleichterung kannst du dem Konqueror auch verschaffen, indem du sicherstellst, dass alle Bilder, die du anforderst, auch tatsächlich vorhanden sind. Sonst scheint er beim Laden der "Folgebilder" zu schlampen.

    Ich wusste nicht, ob ich den Bug schon gemeldet hatte, aber beim Suchen war nichts rausgekommen.


    so long,
    BlueJay
    Geändert von BlueJay (04-10-2006 um 14:53 Uhr) Grund: Zusatzinfos
    Eigentlich ganz einfach, wenn man's weiss!

  4. #4
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Das ist genau das was ich meine du mußt immer erst einen anderen Event vorraus senden bevor der Eigentliche kommt.
    Siehe meinen Code hasAttributes. Seit kdelibs-3.5.3(khtml) haben die beim Rendern den Wurm drin und man kriegt ihn nicht weg. Das geht einem Stellenweise an die Nerven, ich habe drei Pages deshalb schon umbauen müssen.
    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  5. #5
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    ... und das Gemeine ist, du musst etwas ANDERES laden, sonst scheint der intern eine Abkürzung zu nehmen.

    Yepp, seit dieser Version versuche ich auch, drumherumzuprogrammieren. Und da haben wir sie wieder, die Browserweiche!
    Eigentlich ganz einfach, wenn man's weiss!

  6. #6
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825

    Javascript-Konqueror: Versionsabfrage des Browsers

    Na, der Konqueror 3.5.5 hat's gerafft. Dank an alle, die für den Bug gestimmt haben!

    Aber:
    Wie kommt man beim Konqueror javascript/mäßig an die Version?
    navigator.appVersion zeigt nur einen leeren String.

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

  7. #7
    Registrierter Benutzer Avatar von Romanday
    Registriert seit
    03.02.2004
    Beiträge
    829
    Zitat Zitat von BlueJay Beitrag anzeigen
    Aber:
    Wie kommt man beim Konqueror javascript/mäßig an die Version?
    navigator.appVersion zeigt nur einen leeren String.

    so long,
    BlueJay
    Schwierig.

    Du kannst im Konqueror unter Browser-Identifizierung pro
    Seite eintragen was du möchtest.
    += Proxys und Firewalls können den UserAgent auch filtern.
    Die meisten nehmen bei den Einstellungen irgendeine IE Version,
    damit die JS Sripts auf anderen Seiten funktionieren.

    Grund: Bei der JS Browser Identifizierung wird Konquerer meist
    vergessen.
    Abriss, bzw. die Sprengung des World Trade Centers
    WDR Dokumentation
    Doku + DT Untertitel
    Weitere Infos - Terrorstorm

  8. #8
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von Romanday Beitrag anzeigen
    Du kannst im Konqueror unter Browser-Identifizierung pro
    Seite eintragen was du möchtest.
    Wer seine Browser vergewaltigt, ist selber schuld.

    Bei der JS Browser Identifizierung wird Konquerer meist
    vergessen.
    ... weil die Deppen trotz W3C statt auf Ausnahmen auf den Regelfall abfragen.
    Eigentlich ganz einfach, wenn man's weiss!

  9. #9
    Registrierter Benutzer Avatar von undefined
    Registriert seit
    01.03.2004
    Beiträge
    1.255
    Also bei KHTML sind immer noch bei Ajax die Probleme vorhanden.
    Den Agent bekommst du mit einem Regexp
    PHP-Code:
    function getAgent()
    {
       var 
    uAgent navigator.userAgent.toLowerCase();
       var 
    is_opera  = (uAgent.indexOf('opera') != -1);
       var 
    is_saf    = ( ( uAgent.indexOf('applewebkit') != -1  && uAgent.indexOf('spoofer') == -) || ( navigator.vendor == 'Apple Computer, Inc.' ) );
       var 
    is_ie     = ( ( uAgent.indexOf('msie') != -1) && ( !is_opera ) );
       var 
    is_moz    = ( ( navigator.product == 'Gecko') && ( !is_saf ) );
       var 
    is_khtml  = ( navigator.vendor == 'KDE' || ( document.childNodes && !document.all && !navigator.taintEnabled ) );
       var 
    is_kon    = ( uAgent.indexOf('konqueror') != -);
       var 
    is_netsc  = ( uAgent.indexOf('netscape') != -);
       if ( 
    is_khtml ) {
          var 
    reg = new RegExp'^.*khtml/' );
          var 
    Version  uAgent.replacereg'' );
          
    Version  Version.replace( /\D/g'' );
          
    alertVersion );
       }
       return 
    uAgent;

    mfg undefined
    --
    Undefined Behavior (undefiniertes Verhalten) bedeutet meistens etwas ungültiges.
    xhtml Debugger

  10. #10
    Registrierter Benutzer Avatar von BlueJay
    Registriert seit
    27.08.2004
    Beiträge
    825
    Zitat Zitat von undefined Beitrag anzeigen
    Also bei KHTML sind immer noch bei Ajax die Probleme vorhanden.
    na dann werde ich mal noch eine Weile bei der (i)frame-Methode bleiben

    Ach Moment, da war immer noch die Sache mit dem (nicht ausgelöstem) Meta-Refresh! Na, gut, dass es setTimeout gibt!

    so long,
    BlueJay
    Eigentlich ganz einfach, wenn man's weiss!

Lesezeichen

Berechtigungen

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