romero: Jvascript wird nicht richtig ausgeführt / angezeigt

Hallo liebe Gemeinde,

ich habe da ein Browser-Problem.

Ich habe eine *.hta-Datei erstellt, mit viel HTML und mit ganz viel JAVASCRIPT drin. Dieses Script wird von vielen Nutzern genutzt und funktioniert auch einwandfrei. Nur bei einer Person klappt es nicht.

Was nicht klappt, ist die richtige Darstellung der HTML-Seite und das Ausführen des JAVASCRIPT-Quellcode funktioniert ebenfalls mit kleinen aber vertretbaren Fehlern. Ich habe bereits meine "eigene" Einstellungen (Internet Explorer -> Version: 6.0.2900.5512.xpsp_sp3_gdr.120821-1629) -> EXTRAS -> INTERNETOPTIONEN... -> SICHERHEIT auf den Browser des Nutzers wo es nicht korrekt funktioniert übertragen (Internet Explorer -> Version: 8.0.6001.18702) aber es wird wie gesagt, da nicht richtig dargestellt.

Was für Einstellungen muss ich noch vornehmen, dass diese *.hta-Datei richtig ausgeführt bzw. Dargestellt wird (z.B.: bei mir Hintergrund ist Cyan, bei dem anderen Nutzer ist der Hintergrund weiß).

LG Romero

  1. Moin!

    Habe ich das richtig verstanden? Wir reden hier davon dass Du auf dem IE 6 entwickelt hast und auf einem IE 8 gibt es Probleme? Zwischen IE 6 und 8 liegen Welten. Ich nehme an, der Rechner mit der fehlerhaften Darstellung ist der einzige mit IE 8?

    Schicke ihn in den Compat View Modus. Der IE 8 wird wahrscheinlich versuchen Deinen  Code vernuenftig auszufuehren. Wenn der Code fuer den IE 6 ist wird das aber nicht unbedingt klappen, da er fehlerhaft sein duerfte, weshalb Du dafuer sorgen musst das der Browser korrekt eingestellt ist. Versuch mal Deine Seiten mit diesem Metatag zu versehen:

    <meta http-equiv="X-UA-Compatible" content="IE=7">

    Das geht natuerlich auch manuell ueber die Entwicklertools des IE8. (F12)

    --
    Signaturen sind blöd!
    1. Habe ich das richtig verstanden? Wir reden hier davon dass Du auf dem IE 6 entwickelt hast und auf einem IE 8 gibt es Probleme? Zwischen IE 6 und 8 liegen Welten. Ich nehme an, der Rechner mit der fehlerhaften Darstellung ist der einzige mit IE 8?

      Ja er ist der einzige IE 8. Der Rest, meines Erachtens IE 6.
      Naja was heißt entwickelt. Er war ja bei mir drauf und ich habe "losgescriptet" und es sind bisher, unter IE 6 keine Fehler dabei aufgetreten, zwecks Darstellung.

      Schicke ihn in den Compat View Modus. Der IE 8 wird wahrscheinlich versuchen Deinen  Code vernuenftig auszufuehren. Wenn der Code fuer den IE 6 ist wird das aber nicht unbedingt klappen, da er fehlerhaft sein duerfte, weshalb Du dafuer sorgen musst das der Browser korrekt eingestellt ist. Versuch mal Deine Seiten mit diesem Metatag zu versehen:

      <meta http-equiv="X-UA-Compatible" content="IE=7">

      Wie oder wo binde ich diesen Metatag ein? In meinem Script? Oder im Browser? Hab sowas ehrlich gesagt noch nicht gemacht.

      LG Romero

      1. <html>  
        <head>  
        	<title>Stuecklistenscript</title>  
        	<HTA:APPLICATION ID="RolandRaue" APPLICATIONNAME="RolandRaue-Stuecklistenscript" SCROLL="yes" SINGLEINSTANCE="no" WINDOWSTATE="maximize"/>  
        	<meta http-equiv="X-UA-Compatible" content="IE=7">  
          
        	<style type="text/css">
        

        Mein Scriptauszug sieht jetzt so wie folgt aus.
        Getestet hab ich es und ich musste feststellen das auf dem Rechner mit IE 8 es noch etwas schlimmer aussieht. Die Hintergrundfarbe bleibt wie beschrieben weg und was hinzukommt ist, dass er alles zentriert bzw. verzehrt darstellt.

        LG Romero

  2. Was für Einstellungen muss ich noch vornehmen, dass diese *.hta-Datei richtig ausgeführt bzw. Dargestellt wird (z.B.: bei mir Hintergrund ist Cyan, bei dem anderen Nutzer ist der Hintergrund weiß).

    Ich würde nicht in den Systemeinstellungen rumfummeln, sondern die Fehler in deinem Programm korrigieren. Der IE8 hat doch Entwicklertools, mal in die Konsole geschaut?

    1. Ich würde nicht in den Systemeinstellungen rumfummeln, sondern die Fehler in deinem Programm korrigieren. Der IE8 hat doch Entwicklertools, mal in die Konsole geschaut?

      Da komm ich nicht rein, da es ja ne *.hta-Datei ist und sie "ausserhalb" vom IE "was-auch-immer" aufgerufen wird.

      Und Fehler sind es ja direkt keine, da es ja unter IE6 richtig dargestellt wird. Also liegt es ja am Browser bzw. deren Version. Und ich möchte nun gern wissen wie ich entweder innerhalb im Script ein Befehl kritzle, der diesen "Fehler" umgeht oder wie ich im Browser selber Einstellungen vornehmen kann, welches diesen "Fehler" behebt.

      LG Romero

      1. Da komm ich nicht rein, da es ja ne *.hta-Datei ist und sie "ausserhalb" vom IE "was-auch-immer" aufgerufen wird.

        Lässt sich die hta-Datei nicht auch direkt mit dem IE öffnen? Hab damit keine Erfahrung, aber irgendeine debug-Möglichkeit wird es schon geben.

        Und Fehler sind es ja direkt keine, da es ja unter IE6 richtig dargestellt wird.

        Was ein sehr gutes Indiz für Fehler in deinem Code ist.

        Also liegt es ja am Browser bzw. deren Version. Und ich möchte nun gern wissen wie ich entweder innerhalb im Script ein Befehl kritzle, der diesen "Fehler" umgeht oder wie ich im Browser selber Einstellungen vornehmen kann, welches diesen "Fehler" behebt.

        Das ist keine gute Lösung, was ist, wenn der nächste Benutzer mit einem IE8 daherkommt? Möchtest du bei jedesmal wieder die Browsereinstellungen ändern? Und hast du dir mal Gedanken dazu gemacht, was vorgenommene Änderungen für andere .hta-Programme oder Internetseiten bedeuten?

        Mach's lieber gleich anständig und schreibe deinen Code so, dass er von Haus aus in allen Browserversionen funktioniert.

      2. Ich würde nicht in den Systemeinstellungen rumfummeln, sondern die Fehler in deinem Programm korrigieren. Der IE8 hat doch Entwicklertools, mal in die Konsole geschaut?

        Da komm ich nicht rein, da es ja ne *.hta-Datei ist und sie "ausserhalb" vom IE "was-auch-immer" aufgerufen wird.

        Und Fehler sind es ja direkt keine, da es ja unter IE6 richtig dargestellt wird. Also liegt es ja am Browser bzw. deren Version. Und ich möchte nun gern wissen wie ich entweder innerhalb im Script ein Befehl kritzle, der diesen "Fehler" umgeht oder wie ich im Browser selber Einstellungen vornehmen kann, welches diesen "Fehler" behebt.

        Das ist hier eine Frage der Definition. Fuer den IE6 ist es vielleicht kein Fehler. Wenn der IE8 damit Probleme hat, dann ist es aller Wahrscheinlich nach ein Fehler. Den IE6 musste man teilweise fehlerhaft programmieren, bzw. er hat Dinge falsch gemacht die dann oft so uebernommen wurden. In meinen Projekten lagen Differenzen damals meistens schlicht daran, dass ich den schludrigen und inkompatiblen IE Stil uebernommen hatte. Der IE 8 ist von Haus aus standardkonformer und sollte eigentlich die niedrigste genutzte Version darstellen. Der IE6 kann nicht als Referenz dienen. Das ist ein Browser der schon 10 Jahre veraltet ist. Natuerlich kann man nicht unbedingt davon ausgehen, dass das Problemlos moeglich ist. Du hast so einen Fall. Aber der IE ist faktisch seit Jahren tot. MS hat reichlich Zeit zum Umstellen der Systeme ins Land gehen lassen und den IE 8 auch noch abwaertskompatibel gehalten. Da wurde schlicht in der Entwicklung der Anwendung gepennt.

        Ich habe keine Erfahrung mit hta Dateien. Wenn diese wirklich nicht mit den Entwicklertools zu debuggen sind, wirds spassig. Um eine Anpassung wirst Du aber nicht kommen, schaetze ich. Denn der IE 6 ist wie gesagt tot. Irgendwoher kommt ja schliesslich der einzelne IE 8 und das werden sicher nicht weniger. Es ist schon interessant genug, dass es sich nur um einen IE 8 und keinen 9er handelt.

        --
        Signaturen sind blöd!
        1. Das ist hier eine Frage der Definition. Fuer den IE6 ist es vielleicht kein Fehler. Wenn der IE8 damit Probleme hat, dann ist es aller Wahrscheinlich nach ein Fehler. Den IE6 musste man teilweise fehlerhaft programmieren, bzw. er hat Dinge falsch gemacht die dann oft so uebernommen wurden. In meinen Projekten lagen Differenzen damals meistens schlicht daran, dass ich den schludrigen und inkompatiblen IE Stil uebernommen hatte. Der IE 8 ist von Haus aus standardkonformer und sollte eigentlich die niedrigste genutzte Version darstellen. Der IE6 kann nicht als Referenz dienen. Das ist ein Browser der schon 10 Jahre veraltet ist. Natuerlich kann man nicht unbedingt davon ausgehen, dass das Problemlos moeglich ist. Du hast so einen Fall. Aber der IE ist faktisch seit Jahren tot. MS hat reichlich Zeit zum Umstellen der Systeme ins Land gehen lassen und den IE 8 auch noch abwaertskompatibel gehalten. Da wurde schlicht in der Entwicklung der Anwendung gepennt.

          Ich habe keine Erfahrung mit hta Dateien. Wenn diese wirklich nicht mit den Entwicklertools zu debuggen sind, wirds spassig. Um eine Anpassung wirst Du aber nicht kommen, schaetze ich. Denn der IE 6 ist wie gesagt tot. Irgendwoher kommt ja schliesslich der einzelne IE 8 und das werden sicher nicht weniger. Es ist schon interessant genug, dass es sich nur um einen IE 8 und keinen 9er handelt.

          Jetzt frag ich euch Experten mal (Steel / 1UnitedPower), wie stelle ich also mein Script so um, dass er auch unter zukünftige IE's funktioniert ohne jedesmal wieder was umzustellen.

          Was muss ich also tun? An welchem Rad muss ich drehen, dass sowohl unter IE6 als auch z.B. unter IE8 oder auch höher alles reibungslos funktioniert?

          Liegt es "nur" an den CSS-Werten für das Aussehen der HTML-Seite oder muss ich auch das HTML-Gerüst umbauen (welches aber auf den 1. Blick auch unter IE8 passt)? Und was passiert mit den Javascript-Anweisungen? Muss ich auch da was anpasssen?

          Bin da ziemlich unbeholfen in solchen Dingen, weil es bisher (auch in der Testphase mit den anderen Nutzern (halt mit IE6)) ja funtionierte bzw. ich auch nicht gerade vor hab, alles neu zu scripten und zu tippseln. Weil in diesem Projekt stecken halt fast 2 Jahre drin.

          Wenn es also eine einfachere (z.B. CSS-Anweisungen besser deklarieren) und vorallem auch sichere Variante gibt, welches dieses Problem behebt, bin ich euch sehr sehr dankbar.

          LG Romero

          1. Die Antwort dürfte wahrscheinlich ziemlich ernüchternd auf dich wirken: du musst an allen Enden arbeiten. Erschwerend kommt für dich hinzu, dass du dein Programm für moderne Browser aufrüsten musst. Üblicherweise geht man den umgekehrten Weg, heißt: man schreibt sein Programm für aktuelle Browser und passt es anschließend so an, dass es auch in älteren Browsern läuft. Für diesen Fall gibt es einen Haufen Shims und Frameworks, die einem die meiste Arbeit abnehmen.

            Aber gerade wenn du schreibst, dass du schon 2 Jahre daran arbeitest, würde ich dir empfehlen diese nicht-ganz-einfache Aufgabe einmal zu erledigen, damit dein Programm auch noch weitere Jahre benutzbar bleibt.

            1. Die Antwort dürfte wahrscheinlich ziemlich ernüchternd auf dich wirken: du musst an allen Enden arbeiten. Erschwerend kommt für dich hinzu, dass du dein Programm für moderne Browser aufrüsten musst. Üblicherweise geht man den umgekehrten Weg, heißt: man schreibt sein Programm für aktuelle Browser und passt es anschließend so an, dass es auch in älteren Browsern läuft. Für diesen Fall gibt es einen Haufen Shims und Frameworks, die einem die meiste Arbeit abnehmen.

              Aber gerade wenn du schreibst, dass du schon 2 Jahre daran arbeitest, würde ich dir empfehlen diese nicht-ganz-einfache Aufgabe einmal zu erledigen, damit dein Programm auch noch weitere Jahre benutzbar bleibt.

              Da hast du sicher Recht. Aber die Frage war gerade an welcher Stelle muss ich was ändern? Kann ich die Javascript-Anweisungen stehen lassen und nur die CSS- bzw. die HTML-Deklarationen abändern oder wo genau muss ich ansätzen?

              Ich habe unter Selfhtml folgendes gefunden und hoffe das es darüber geht:

              http://de.selfhtml.org/css/formate/box_modell.htm#browser@title=http://de.selfhtml.org/css/formate/box_modell.htm#browser

              Reicht es aus, nur das hinzuzufügen oder wo muss ich noch was ändern? Weil das ist gerade absolutes Neuland für mich, da ja diese *.hta-Datei nur "lokal" benutzt wird und ich also nicht direkt weiß, wo und wie.

              Wer möchte, dem kann ich auch eine Kopie zukommen lassen, um sich die Datei mal anzuschauen.

              LG Romero

              1. Den Dokumenttyp zu aendern mag schon funktionieren. Quirks mode waere evtl. ein Stichwort fuer dich.

                Wer möchte, dem kann ich auch eine Kopie zukommen lassen, um sich die Datei mal anzuschauen.

                Ein Beispiel ist natuelrich am Besten. Fraglich, inwiefern Das okay ist. Wenn Du meinst das sei in Ordnung... Keine Ahnung wieviel geheime Sachen diese Datei enthaelt.

                Wenn sich hier niemand sonst findet, sag bescheid. Dann poste ich hier ne Wegwerfadresse, an die Du mailen kannst. Im Moment hab ich keine ueber, muesste erst was anlegen.

                Ich werds aber nicht fixen, sondern nur mal drueber schauen ob mir was auffaellt.

                --
                Signaturen sind blöd!
                1. Den Dokumenttyp zu aendern mag schon funktionieren. Quirks mode waere evtl. ein Stichwort fuer dich.

                  Sagt mir was. Ist doch IE 5 oder so etwas habe ich gelesen. Kann mich aber auch irren :)

                  Ein Beispiel ist natuelrich am Besten. Fraglich, inwiefern Das okay ist. Wenn Du meinst das sei in Ordnung... Keine Ahnung wieviel geheime Sachen diese Datei enthaelt.

                  Wenn sich hier niemand sonst findet, sag bescheid. Dann poste ich hier ne Wegwerfadresse, an die Du mailen kannst. Im Moment hab ich keine ueber, muesste erst was anlegen.

                  Ich werds aber nicht fixen, sondern nur mal drueber schauen ob mir was auffaellt.

                  Ne fixen kann und werde ich es schon selber tun müssen, bräuchte halt nur Ansätze :) und so wichtige Sachen stehen ja nicht drin weil ich nur das HTML-Grundgerüst sowie die CSS-Werte kurz darstellen werde. Und auch kurz Anfang und Ende der Javascript-Anweisungen (weil da ist ja egal was ich aufrufe, wenn sich dieses Problem auf ganz Javascript auswirkt).

                  Scriptauszug würde ich morgen reinstellen.

                  LG Romero

          2. Hiho!

            Sehr gute Frage. Eine exakte Antwort ist schwierig, da dein Projekt nicht bekannt ist.

            Schauen wir also mal warum Du dieses Problem (wahrscheinlich) hast:

            Der IE (bis einschliesslich 7) hat auf Standards gepfiffen. Ob das merkwuerdige Arten der Auslegung des Boxmodells unter CSS waren oder die moeglichkeit in JS Elemente anzusprechen indem man eine ID benutzte obwohl diese Elemente keine hatten (Das Name Attribut hat gereicht). Eigenwillige Fehlerkorrektur spielt auch eine Rolle.

            Der IE 8 hat hier endlich Fortschritte gemacht. Er beherrscht zwar bestimmte Dinge nicht ohne weiteres (Runde Ecken? Wasn das?) aber ist sonst schon recht nah an dem was als Standard gilt. Man hat normalerweise keine Probleme mit dem IE auch wenn Seiten dort oft anders aussehen. Es spielt aber ja keine rolle ob die Ecken nun rund sind oder ob der Hintergrund aus 4 Bildern besteht. Wenn man fuer den IE 8 schreibt (im richtigen Modus) dann wird die Seite in den meisten Faellen auch auf anderen Browsern korrekt dargestellt. Das ist eigenltich ein Zeichen dafuer dass in Zukunft, wenn ueberhaupt, nur kleinere Probleme auftauchen werden.

            Die Antwort ist also sehr pauschal: Man kann fuer die Zukunft nur Vorsorgen, indem man sich an Standards haelt. Validatoren nutzen. Wenn ich hta richtig verstehe sind es mehr oder weniger normale HTML Seiten die lediglich die Endung .hta haben. Es gibt wohl auch einige Funktionen, die HTML nicht bietet.

            Es sollte also kein groesseres Problem sein, Seiten zu entwickeln, durch Validatoren laufen zu lassen und dann mit der Endung .hta zu versehen. Wenn ich das richtig sehe, dann besorg dir einen IE 8 (auf einem 2. Rechner oder in einer VM) kopiere dein Projekt, mach HTML draus und freunde dich mit dem Debugger an. Dann solltest Du schnell auf den IE8 umsteigen und den IE6 nur noch fuer Testzwecke nutzen.

            Falls das so funktioniert, solltest Du weiterhin zum Entwickeln eine Version nur fuer Dich haben und aus dieser dann jeweils die benoetigten hta Ressourcen fuer das Livesystem erstellen.

            Ohne bestimmte Kenntnisse geht sowas nicht. Und mal eben so wohl auch nicht. Man muss aber auch nicht Anwendungsentwicklung studieren. Die Standrads muss man kennen oder nachschlagen. Leider wimmelts im Netz vor schlechten und veralteten Anleitungen. (Ganz neue Anleitungen helfen dir aber u.U. genauso wenig weiter, wie die Tipps von Gunnar, solange Du nur IE 6 - 8 nutzt)

            So ein Projekt ist allerdings niemals wirklich fertig. Maximal 'fuer den Augenblick'. Es ist unumgaenglich immer ein Auge auf die Entwicklungen zu haben. Das Problem ist hier leider: Es lohnt nicht jemanden dafuer anzustellen. Es ist sauteuer das extern machen zu lassen. Also wird oft jemand internes genommen, der weiss, wie man eine Datei erstellt: "mach doch ma eben" Ahnt ja keiner, was an sowas alles dran  haengt...

            Welchen Grund hast Du eigentlich keine normale Webanwendung aus HTML Daten zu schreiben sondern hta zu benutzen? Scheint mir doch eher nachteilbehaftet zu sein.

            --
            Signaturen sind blöd!
            1. Welchen Grund hast Du eigentlich keine normale Webanwendung aus HTML Daten zu schreiben sondern hta zu benutzen? Scheint mir doch eher nachteilbehaftet zu sein.

              HTA ist ja nur eine HTML-Applikation, also eine HTML-Seite als eine Art *.exe.
              Wollte es halt nicht über den Browser aufrufen bzw. alles auf ne Art Server packen. Und weil mir ein Bekannter die ersten Versuche in HTA programmierte, habe ich es halt weiter geführt. Und so ein großer Unterschied zu einer Webanwendung im klassischem Stil ist es wiederrum auch nicht.

              Weil benutze auch CSS, HTML und halt auch Javascript.

              HTA ist halt nix anderes, wie du bereits sagst, ein HTML-Gerüst mit CSS- bzw. Javascript-Anweisungen welche dann als Datei abgespeichert wird mit der Endung *.hta.

              Also wenn ich deine Aussagen richtig verstehe, bezieht sich dieser "Fehler" ja rein auf das Darstellen der Seite. Sprich, wenn ich diverse Standards benutze bzw. festlege und diverse (oder alle) CSS-Anweisung korrekt und erneut definiere, dann sollte doch eigentlich die Seite richtig dargestellt werden oder?

              Weil wenn ich diese *.hta-Datei starte (benutze), wird Javascript richtig ausgeführt bzw. es werden keine Fehler angezeigt. Egal welche Daten ich eintrage, auswähle oder sogar ausdrucke. Alle Funktionen einwandtfrei.

              Also bin der Meinung das es ja nur eine CSS- bzw. HTML-Problem Darstellungsproblem) ist. Denn in der *.hta-Datei stehen das HTML-Gerüst und die CSS-Anweisungen, alle anderen Sachen sind *.js-Dateien und werden nur eingeladen.

              LG Romero

              1. Hi,

                Welchen Grund hast Du eigentlich keine normale Webanwendung aus HTML Daten zu schreiben sondern hta zu benutzen? Scheint mir doch eher nachteilbehaftet zu sein.
                HTA ist ja nur eine HTML-Applikation, also eine HTML-Seite als eine Art *.exe.

                nein, es ist immer noch ganz normales HTML/CSS und Javascript - naja, so normal, wie es für den IE halt sein kann. Der Unterschied ist, dass HTA-Dateien nur in einem rudimentären Browser-Control ausgeführt werden (also nicht mit dem ganzen Toolbar-Gedöns und so), und dass sie über besondere Attribute etwas Kontrolle über Fenstergröße und -eigenschaften erhalten. Außderdem gilt für HTA-Dateien AFAIK eine niedrigere Sicherheitsstufe als für reguläre HTML-Dokumente.

                Trotzdem kann man die Dinger auch einfach auf *.html umbenennen und dann ganz normal im IE laden. Dann stehen einem auch die Hilfen des Browsers (Developer Tools) zur Verfügung.

                Ciao,
                 Martin

                --
                PCMCIA: People Can't Memorize Computer Industry Acronyms
                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                1. Trotzdem kann man die Dinger auch einfach auf *.html umbenennen und dann ganz normal im IE laden. Dann stehen einem auch die Hilfen des Browsers (Developer Tools) zur Verfügung.

                  Ciao,
                  Martin

                  Das heißt ich benenne mein *.hta in *.html um und ich kann dann die Debug-Funktion im IE8 nutzen?

                  Aber wenn du so form hier drin bist, wenn ich es mal so sagen darf :), dann kannst du mir bestimmt auch nen kleinen Tipp geben wo ich ansetzen muss damit ich dieses Script sowhl in IE6 als auch in IE8 nutzen kann, oder?

                  LG Romero

                  1. Hi,

                    Trotzdem kann man die Dinger auch einfach auf *.html umbenennen und dann ganz normal im IE laden. Dann stehen einem auch die Hilfen des Browsers (Developer Tools) zur Verfügung.
                    Das heißt ich benenne mein *.hta in *.html um und ich kann dann die Debug-Funktion im IE8 nutzen?

                    ja, so ist es. Eventuell sind die dann geltenden Sicherheitseinstellungen anders (strenger), als für deine fertige HTA, aber das kann man während der Entwicklung verschmerzen, denke ich. Vor allem dann, wenn man zunächst mal die Programmlogik von der Darstellung abkoppelt und erstmal nur letztere betrachtet.

                    Aber wenn du so form hier drin bist, wenn ich es mal so sagen darf :), dann kannst du mir bestimmt auch nen kleinen Tipp geben wo ich ansetzen muss damit ich dieses Script sowhl in IE6 als auch in IE8 nutzen kann, oder?

                    Nein, eher nicht. Ich habe mich vor Jahren mal ein wenig mit HTA beschäftigt, bin da aber nie wirklich tief eingestiegen. Allerdings bin ich anhand der bisherigen Informationen auch der Meinung, dass deine Probleme wenig bis gar nichts mit der HTA-Thematik zu tun haben, sondern einfach mit "korrektem" HTML und CSS. Korrekt deshalb in Anführungszeichen, weil man -wie schon jemand anders erwähnte- dem IE manchmal gezielt falschen Code (im Sinne der Spec) andrehen muss, damit er wie gewünscht reagiert. Insbesondere der Quirks Mode, also der Kompatibilitätsmodus, in dem auch IE6-8 absichtlich noch einige Spleens und Fehler des IE5 emulieren, macht oft Probleme, weshalb man ihn tunlichst vermeiden möchte.

                    Wenn du deinen Code mal herzeigst, kann man vielleicht gezieltere Hinweise geben.

                    So long,
                     Martin

                    --
                    Der Sinn einer Behörde besteht in ihrer Existenz.
                      (alte Beamtenweisheit)
                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                    1. Wenn du deinen Code mal herzeigst, kann man vielleicht gezieltere Hinweise geben.

                      Werde ich Morgen euch präsentieren, da der Code auf Arbeit ist und ich z.Z. zu Hause bin.

                      LG Romero

                      1. Hier nun mal ein Code-Auszug:

                        <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                          "http://www.w3.org/TR/html4/strict.dtd">

                        <html>  
                        <head>	  
                        	<title>Stuecklistenscript</title>  
                        	<HTA:APPLICATION ID="RolandRaue" APPLICATIONNAME="RolandRaue-Stuecklistenscript" SCROLL="yes" SINGLEINSTANCE="no" WINDOWSTATE="maximize"/>
                        
                        	<style type="text/css">  
                          
                        		@media screen {  
                          
                        			/*-------------------------------*/  
                        			/* -- Allgemeine Festlegungen -- */  
                        			/*-------------------------------*/  
                          
                        				body { background-color:lightblue; font-family:Times; font-size:14px; }  
                        				form { width:1120px; border:3px; border-style: outset; border-color: lightgrey }  
                        				div.rollbalken { width: 1100px; margin:0px; border:2px; border-style: inset; overflow:scroll; overflow-x:hidden }  
                        				.Folie { border:2px; border-style: inset; padding:3px }  
                        				.Inhalt { border:2px; border-style: inset; padding:3px }  
                        				.STL_Meldungen_Überschreiben { height:31px; margin:0px; padding:1px; border:2px; border-style: inset; color: black; font-weight: bold }  
                        				.STL_Meldungen_Überschreiben_Links { height:31px; margin:0px; padding:1px; border:2px; border-style: inset; color: black; font-weight: bold }  
                        				.STL_Meldungen_Überschreiben_Zeit { height:31px; margin:0px; padding:4px; border:2px; border-style: inset; color: darkred; font-weight: bold }  
                        				.STL_Meldungen_Fehler { height:47px; width:1100px; margin:0px; padding:2px; border:2px; border-style: inset; overflow:scroll; overflow-x:hidden; color: darkred; font-weight: bold }  
                        				.STL_Meldungen_Button { vertical-align:middle }  
                        				.STL_Meldungen_Button_Links { vertical-align:middle }  
                          
                        				.Warnhinweis { color: red }  
                        				.table2 { width: 180px; border-spacing:0; border-collapse:collapse; margin-top:0px; border:0px }  
                        				.table3 { width: 1030px; border:2px; border-style: outset; padding:3px; border-color: lightgrey; margin-left:25px }  
                        				.table4 { width: 1050px; border-spacing:0; border-collapse:collapse; margin-top:0px; border:0px; margin-left:15px }  
                        				.ZusatzListe { vertical-align:middle; margin-top:0px }  
                          
                        ...  
                          
                        	</style>
                        
                        	<!----------------------------->  
                        	<!-- Allgemeine Hauptscripte -->  
                        	<!----------------------------->  
                          
                        	<script type="text/javascript" src="./Haupt_Includes/Aufrufe_Speicherung.js"></script>  
                        		  
                        	<script type="text/javascript" src="./Haupt_Includes/Bereichsauswahl.js"></script>  
                        	<script type="text/javascript" src="./Haupt_Includes/Zusatzmatten_SA_LR.js"></script>  
                        	<script type="text/javascript" src="./Haupt_Includes/Zusatzmatten_A380.js"></script>  
                        	<script type="text/javascript" src="./Haupt_Includes/Tuermatten_A380.js"></script>  
                          
                        ...  
                          
                        	//--------------------------------------------------------------------------//  
                        	//-- Ausgabefenster anhand der Fenstergröße ermitteln und ggf. neu setzen --//  
                        	//--------------------------------------------------------------------------//  
                          
                        		function Fensterhoehe()  
                        		{  
                        			function Fensterhoehe_ermitteln()  
                        			{  
                          
                        ...  
                          
                        		};  
                        		  
                        	//-----------------------//  
                        	//-- Javascript - Ende --//  
                        	//-----------------------//  
                          
                        	</script>
                        
                        </head>  
                        	<body onKeyPress="return Entersperre(event)" onKeyDown="return F5sperre(event)" onmousedown="return rechteMaussperre()" oncontextmenu="return rechteMaussperre()" onload="init_Basis(); Inhalt_leeren(); load('500'); Fensterhoehe(); Version(); Aufrufe_Script()">  
                          
                          
                        	<table id="Tabelle0" height=957 width=1120 align="center">  
                        		<tr>  
                        		<td width=409></td>  
                        		<td>  
                        				<div style="position: relative; width:504px; background-color: #FFFFFF; border: 2px; border-style: outset; border-color: lightgrey">  
                        					<span id="counter" style="position: absolute;  width: 100%; z-index: 3; text-align: center; font-weight: bold;">0%</span>  
                        					<div id="status" style="position: relative; background-color: #00AAFF; width:0px; height: 22px; z-index: 2;">  
                        					</div>  
                        				</div>  
                        				<div id="Ladestatus" style="text-align: left; font-weight: bold;">X:/Arbeitsvorbereitung/.../Stuecklistenscript.hta</div>  
                        		</td>  
                        		<td width=409></td>  
                        		</tr>  
                        	</table>  
                          
                        	<form id="Auswahl" name="Auswahl" style="display: none;">  
                        		<table id="Tabelle1" align="center">  
                        			<tr height=3>  
                        				<td colspan=12></td>  
                        			</tr>  
                         			<tr height=75>  
                        				<td width=10></td>  
                        				<td colspan=10 width=1100><h2><center>Stücklistenscript</h2><h5>für SINGLE AISLE / LONG RANGE / AIRCABIN / A380</h5></center></td>  
                        				<td width=10></td>  
                        			</tr>  
                        			<tr height=3>  
                        				<td colspan=12></td>  
                        			</tr>  
                        			<tr height=30>  
                        				<td width=10></td>  
                        				<td width=80 align="center">Flugzeugtyp:</td>  
                          				<td width=128><label id="FLTLabel" for="FLT"></label>  
                        					<select id="FLT" name="FLT">  
                          
                        ...  
                          
                        			<tr id="div-container">  
                        				<td width=10></td>  
                        				<td width=1100 colspan=10 bgcolor=white><div id="msgs" class="rollbalken"></div></td>  
                        				<td width=10></td>  
                        			</tr>  
                        			<tr height=10>  
                        				<td width=10></td>  
                        				<td colspan=5 align="left" id="Version"></td>  
                        				<td colspan=5 align="right"><font size="1.5">&copy Copyright by Roland Raue</font></td>  
                        				<td width=10></td>  
                        			</tr>  
                        		</table>  
                          	</form>  
                          
                        	</body>  
                        </html>
                        

                        Ich habe nun oben ein DOCTYPE eingeführt.
                        Nun stelle ich aber fest, dass diverse CSS-Anweisungen nicht korrekt dargestellt werden.

                        Das obere Bild ist so, wie es sein soll und das untere ist so wie es nach dem hinzufügen von DOCTYPE aussieht. Wie man halt dadurch sehr gut erkennt, ist es ein wenig verschoben bzw. einige Felder nicht korrekt wiedergegeben. Zudem stimmt die Schriftgröße nicht so wie es "vorher" der Fall war.

                        Muss ich nun also die CSS-Anweisungen anders deklarieren. Weil es geht ja nur um den Aufbau bzw. Darstellung der HTA-Datei. Denn wie bereits erwähnt funktioniert Javascript einwandtfrei.

                        Script

                        LG Romero

                        1. So ich bin nun dabei, auf IE8 umzustellen.

                          ich habe nun als Dokumentanfang ~~~html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
                                    "http://www.w3.org/TR/html4/loose.dtd">

                          Ich bin nun dabei diese so anzupassen, dass es wieder "passt" bzw. meinen Vorstellungen entspricht.  
                            
                          Nun meine Fragen:  
                            
                          1\. Warum konnte ich beim <tag> form kein 3D-Rand erstellen, so wie es vorher war (ging nur über die <tag>'s table)?  
                            
                          2\. Warum werden nun die CSS-Anweisungen wie padding oder margin so unterschiedlich dargestellt bzw. warum ist da so ein großer Unterschied zu erkennen (Bsp.: ich habe z.B. folgende CSS-Anweisung: `.STL_Meldungen_Fehler { height:47px; width:1100px; margin:0px; padding:2px; border:2px; border-style: inset; overflow:scroll; overflow-x:hidden; color: darkred; font-weight: bold }`{:.language-css}. Wird diese nun ausgeführt, dann wird kaum sichtbar, aber spürbar, die Tabelle um wenige Pixel nach unten gestreckt bzw. die unteren <td>'s um ?.px verschoben). Nehme ich nun alle Werte weg bzw. setze ich sie auf 0, dann ist keine Änderung sichtbar. Wo also ist da der Fehler? Wie kann `border-style: inset / border: 2px / padding: 2px /... `{:.language-css} so verändert werden, dass sich dieses Phänomen nicht wieder holt bzw. nicht mehr auftritt?  
                            
                          3\. Wenn ich nun mein Script an den IE8 angepasst hab, wie wirkt sich das dann auf den IE9 oder höher aus? Wie kann ich gewährleisten, dass ich in vielleicht einigen Monaten nicht wieder vor so einem Problem sitze?  
                            
                          4\. Javascript wird auch im IE8 (ohne dieses DOCTYPE) ohne Fehler ausgeführt (als HTA-Datei / als HTML-Datei bringt er Fehler -> Automatisierungsserver kann Objekt nicht erstellen bei new ActiveXObject("WScript.shell") und den dazugehörigen Variablen) aber wie gesagt, HTML-Gerüst bzw. die CSS-Anweisungen sind fehlerhaft (Betonung auf letzteres).  
                            
                          5\. Hab schon einige Artikel gelesen und durchforstet. Aber bisher konnte ich nur Fetzen für mein Script gebrauchen bzw. wurde getestet, aber bisher noch ohne zwinglichen Erfolg.  
                            
                          Ich bitte Euch "liebevoll" um Tipps und auch Hilfen, wie ich das Problem lösen kann, so lösen kann, dass auch später keine Probleme mehr auftauchen (in dieser Sache). Wer dieses Script gern sichten möchte um daran sich zu versuchen oder mir da Tipps geben kann, dem biete ich es gern an.  
                            
                          Aber bitte keine Links zu Seiten, wo ich nur Ansätze finde. Was ich brauche sind halt auf mein Problem / Script passende Ratschläge, ohne eure Tipps und Vorschläge zu schmälern.  
                            
                          Ich bin hier zwar bei Selfhtml.org aber nur über "SELBST" komm ich leider nicht auf die passende Lösung. Helft mir, bitte. Denn sitze bereits seit etwa 2 Wochen an dieser Sache.  
                            
                          LG Romero
                          
                          1. Hallo,

                            ich habe nun als Dokumentanfang ~~~html

                            <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"

                            "http://www.w3.org/TR/html4/loose.dtd">

                              
                            wenn du sowieso Zeit investierst, wäre das aber eine gute Wahl. Die Strict-Dialekte zwingen einen nämlich mehr zur Disziplin, wie etwa Markup (Struktur) und Stylesheet (Darstellung) konsequent und sauber zu trennen, während Transitional eher mal zur Schlamperei verführt.  
                              
                            
                            > 1. Warum konnte ich beim <tag> form kein 3D-Rand erstellen, so wie es vorher war (ging nur über die <tag>'s table)?  
                              
                            Das Styling von Form-Controls ist bei einigen Browsern bewusst eingeschränkt, damit Eingabeelemente weitestgehend so aussehen, wie sie der Nutzer gewöhnt ist, und nicht vom Autor bis zur Unkenntlichkeit verstümmelt werden. Dass das auch auf das form-Element selbst zutrifft, war mir bisher auch nicht bekannt, aber ich halte es durchaus für möglich.  
                              
                            
                            > 2. Warum werden nun die CSS-Anweisungen wie padding oder margin so unterschiedlich dargestellt  
                              
                            Häufigster Grund, zumindest beim IE: Der Quirks Mode. Ich erwähnte schon, dass der IE in diesem Modus versucht, soweit wie möglich die Fehler seiner Urahnen zu imitieren. Dazu gehört auch das Box Model, das bis IE5 falsch implementiert war (falsch: padding ist in der Breite/Höhe des Elements enthalten; richtig: padding wird zur Breite/Höhe des Elements hinzugefügt).  
                              
                            ~~~css
                            .STL_Meldungen_Fehler  
                             { height:47px;  
                               width:1100px;  
                               margin:0px;  
                               padding:2px;  
                               border:2px;  
                               border-style: inset;  
                               overflow:scroll;  
                               overflow-x:hidden;  
                               color: darkred;  
                               font-weight: bold  
                             }
                            ~~~.  
                              
                            Eine saubere, klar lesbare Formatierung ist kein Luxus! Ich hab den Code-Block mal "gesäubert", damit man ihn besser überblicken kann.  
                              
                            
                            > Wird diese nun ausgeführt, dann wird kaum sichtbar, aber spürbar, die Tabelle um wenige Pixel nach unten gestreckt bzw. die unteren <td>'s um ?.px verschoben).  
                              
                            Klar, zur angegebenen Höhe von 47px kommen oben und unten noch je 2px padding und 2px border hinzu. Rechts und links übrigens auch.  
                              
                            
                            > Nehme ich nun alle Werte weg bzw. setze ich sie auf 0, dann ist keine Änderung sichtbar. Wo also ist da der Fehler?  
                              
                            Keine Ahnung, ich kann nicht nachvollziehen, was du genau meinst.  
                              
                            
                            > Wie kann `border-style: inset / border: 2px / padding: 2px /... `{:.language-css} so verändert werden, dass sich dieses Phänomen nicht wieder holt bzw. nicht mehr auftritt?  
                              
                            Wenn du an allen 4 Seiten je 4px hinzufügst, musst du width und height um diese 2 \* 4px reduzieren, damit das Element insgesamt denselben Platz beansprucht.  
                              
                            
                            > 3. Wenn ich nun mein Script an den IE8 angepasst hab, wie wirkt sich das dann auf den IE9 oder höher aus? Wie kann ich gewährleisten, dass ich in vielleicht einigen Monaten nicht wieder vor so einem Problem sitze?  
                              
                            Das kann dir keiner garantieren, aber die Wahrscheinlichkeit wird immer geringer. Denn auch der IE hält sich zumindest ab Version 8 schon sehr ordentlich an die Spezifikationen und wird mit höherer Versionsnummer immer besser. Sinnvoll ist daher, immer zunächst einen weitgehend standardkonformen Browser zum Entwickeln und Testen zu verwenden, etwa Opera, Firefox oder einen IE8+, und \*dann\* erst Anpassungen für ältere IEs zu machen, wo das nötig ist.  
                              
                            So long,  
                             Martin  
                            
                            -- 
                            [Datenbanken](http://community.de.selfhtml.org/zitatesammlung/zitat470) speichern keine User.  
                            Das liegt daran, daß Datenbanken mit der Lebensmittelversorgung für gespeicherte biologische Lebensformen derzeit noch Probleme haben.  
                              (Christoph Schnauß)  
                            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                            
                            1. Hallo Martin,

                              wenn du sowieso Zeit investierst, wäre das aber eine gute Wahl. Die Strict-Dialekte zwingen einen nämlich mehr zur Disziplin, wie etwa Markup (Struktur) und Stylesheet (Darstellung) konsequent und sauber zu trennen, während Transitional eher mal zur Schlamperei verführt.

                              Ok dann werde ich es beherzigen und die "strict"ere Form verwenden.

                              Das Styling von Form-Controls ist bei einigen Browsern bewusst eingeschränkt, damit Eingabeelemente weitestgehend so aussehen, wie sie der Nutzer gewöhnt ist, und nicht vom Autor bis zur Unkenntlichkeit verstümmelt werden. Dass das auch auf das form-Element selbst zutrifft, war mir bisher auch nicht bekannt, aber ich halte es durchaus für möglich.

                              Gut zu wissen, ich habe es, wie bereits an anderer Stelle erwähnt, so umgebaut, dass das form-Element quasi meine Tabelle umschliesst und ich sozusagen diese 3D-Umrandung in diese besagte Tabelle eingebaut habe.

                              Häufigster Grund, zumindest beim IE: Der Quirks Mode. Ich erwähnte schon, dass der IE in diesem Modus versucht, soweit wie möglich die Fehler seiner Urahnen zu imitieren. Dazu gehört auch das Box Model, das bis IE5 falsch implementiert war (falsch: padding ist in der Breite/Höhe des Elements enthalten; richtig: padding wird zur Breite/Höhe des Elements hinzugefügt).

                              .STL_Meldungen_Fehler

                              { height:47px;
                                 width:1100px;
                                 margin:0px;
                                 padding:2px;
                                 border:2px;
                                 border-style: inset;
                                 overflow:scroll;
                                 overflow-x:hidden;
                                 color: darkred;
                                 font-weight: bold
                              }

                              
                              >   
                              > Eine saubere, klar lesbare Formatierung ist kein Luxus! Ich hab den Code-Block mal "gesäubert", damit man ihn besser überblicken kann.  
                                
                                
                              Ok, ich werde deinen Rat annehmen und diese "saubere" Form verwenden. Und mir nochmals dieses Box-Model zugemüte führen.  
                                
                                
                              
                              > Klar, zur angegebenen Höhe von 47px kommen oben und unten noch je 2px padding und 2px border hinzu. Rechts und links übrigens auch.  
                                
                              Das heißt also (an Hand der oben angeführten CSS-Anweisung), wenn ein <td> mit einer Höhe von 50px deklariert ist, muss ich also die CSS-Anweisung (border und pading bleibt wie oben) in Bezug auf die "neue" Höhe nicht auf height=47px sondern auf height=42px gehen damit die <td> nicht größer, gedehnter wird.  
                              
                              >   
                              > > Nehme ich nun alle Werte weg bzw. setze ich sie auf 0, dann ist keine Änderung sichtbar. Wo also ist da der Fehler?  
                              >   
                              > Keine Ahnung, ich kann nicht nachvollziehen, was du genau meinst.  
                                
                              Ich glaube, dass wird sich dann durch den obigen Versuch aufheben. Ging um die Werte in der oben angeführten CSS-Anweisung.  
                                
                                
                              
                              > > 3. Wenn ich nun mein Script an den IE8 angepasst hab, wie wirkt sich das dann auf den IE9 oder höher aus? Wie kann ich gewährleisten, dass ich in vielleicht einigen Monaten nicht wieder vor so einem Problem sitze?  
                              >   
                              > Das kann dir keiner garantieren, aber die Wahrscheinlichkeit wird immer geringer. Denn auch der IE hält sich zumindest ab Version 8 schon sehr ordentlich an die Spezifikationen und wird mit höherer Versionsnummer immer besser. Sinnvoll ist daher, immer zunächst einen weitgehend standardkonformen Browser zum Entwickeln und Testen zu verwenden, etwa Opera, Firefox oder einen IE8+, und \*dann\* erst Anpassungen für ältere IEs zu machen, wo das nötig ist.  
                                
                              Und wie verhält sich dann das Script, wenn ich also das ganze für den IE8 anpasse, in IE6 (quasi für die anderen Nutzer mit IE6)? Bzw. wie deklariere ich es dann, wenn es da einen Unterschied gibt? Mittels dieser CSS-Hacks?  
                                
                              LG Romero
                              
                              1. Moin!

                                Wie Martin (und ich auch) schon sagte: Wenn Du standardkonform schreibst, ist die Wahrscheinlichkeit, dass alles in anderen Browsern funktioniert sehr hoch. Doctype strict ist dafuer wirklich noch der beste Garant, weil Du gezwungen wirst sauber zu arbeiten. Nutze einen Validator. Dem kannst Du gewoehnlich Code(teile) oder auch ne URL zu einer Seite verfuettern.

                                Leider bist Du auf 2 Browser angewiesen, die HTML 5 gar nicht oder nicht gut verstehen. Denn mit HTML 5 waerst Du auf einer recht sicheren Seite. Aber man kann wohl davon ausgehen dass auch neue Browser korrektes HTML 4 noch eine ganze Weile interpretieren werden.

                                Trenne dich am Besten von dem Gedanken dass alles auf dem IE6 immer exakt so aussieht wie auf einem IE8. Spielt es wirklich eine Rolle, dass deine Zellen Pixelgenau ausgerichtet sind? Sind die verbrauchte Hoehe und ein 3D Rand nicht eigentlich egal? Verrenn dich nicht in erstmal unwichtige Details.

                                Die Hauptsache sollte doch sein, dass auf den Ersten Blick alles wie gewohnt aussieht und funktioniert.

                                --
                                Signaturen sind blöd!
                                1. Leider bist Du auf 2 Browser angewiesen, die HTML 5 gar nicht oder nicht gut verstehen. Denn mit HTML 5 waerst Du auf einer recht sicheren Seite. Aber man kann wohl davon ausgehen dass auch neue Browser korrektes HTML 4 noch eine ganze Weile interpretieren werden.

                                  Die Umstellung auf IE8 bzw. IE9 oder später noch Höher, wurde von meinem Admin mir zugesagt (bzw. die Umstellung auf Windows 7) und da ist eh nur der IE8 verwendbar. Aber bis dahin halt wollte ich beide IE's abfangen.

                                  Trenne dich am Besten von dem Gedanken dass alles auf dem IE6 immer exakt so aussieht wie auf einem IE8. Spielt es wirklich eine Rolle, dass deine Zellen Pixelgenau ausgerichtet sind? Sind die verbrauchte Hoehe und ein 3D Rand nicht eigentlich egal? Verrenn dich nicht in erstmal unwichtige Details.

                                  Die Hauptsache sollte doch sein, dass auf den Ersten Blick alles wie gewohnt aussieht und funktioniert.

                                  Naja egal ist es für meine Sache so nicht direkt. Lege schon auch einen Wert auf gutes Design ohne Verschiebung / Verzehrung einiger Elemente.
                                  Hast Recht, in erster Linie funktioniert es auch soweit wie ich es testen konnte. Javascript ist durch die Umstellung auf IE8 (läuft halt leider nur auf einem Rechner) nicht betroffen bzw. ich hab bisher noch nix gemerkt (was aber sicherlich an der ein oder anderen Stelle noch auftreten könnte).

                                  Ich bin halt in solchen Dingen ein Perfektionist. Ich versuche immer das optimale rauszuholen und da sind für mich solche Sachen wie "nicht-korrektes-darstellen-der-Elemente" halt störend und so lange ich ja "nur" das Design zu beheben hab, mache ich es auch. Damit es wieder so aussieht wie gewollt.

                                  LG Romero

                                  1. Hallo romero,

                                    Die Umstellung auf IE8 bzw. IE9 oder später noch Höher, wurde von meinem Admin mir zugesagt (bzw. die Umstellung auf Windows 7) und da ist eh nur der IE8 verwendbar. Aber bis dahin halt wollte ich beide IE's abfangen.

                                    vielleicht meinst du das ja so:

                                    WinXP: IE8 und älter, es sollte aber der 8er benutzt werden.
                                    Win7:  IE9
                                    Win8:  IE10

                                    Gruß, Jürgen

                                    1. Hallo romero,

                                      Die Umstellung auf IE8 bzw. IE9 oder später noch Höher, wurde von meinem Admin mir zugesagt (bzw. die Umstellung auf Windows 7) und da ist eh nur der IE8 verwendbar. Aber bis dahin halt wollte ich beide IE's abfangen.

                                      vielleicht meinst du das ja so:

                                      WinXP: IE8 und älter, es sollte aber der 8er benutzt werden.
                                      Win7:  IE9
                                      Win8:  IE10

                                      Gruß, Jürgen

                                      Oder so. Jedenfalls fällt da was wech :)

                                      LG Romero

                                      1. Dieser Validator ist klasse, sowas wusste ich ja bisher nicht, dass ich darüber mein Gerüst an HTML und CSS überprüfen lassen kann.

                                        Was ich aber nicht so ganz verstehe sind solche Sachen wie Shorttags. Bzw. das manche kein Endtag brauchen?

                                        Bsp.: Bisher habe ich bei <input name="test" value="OK">Drück mich</input> immer ein Endtag geschrieben, nun zeigt mir dieser Validator aber da ein Fehler an, dass er dieses </input> nicht benötigt.

                                        Ich habe es nun weggelassen aber ist es denn so ein kravierender Fehler?

                                        Und dieser Validator hilft mir nun, mein Script für kommende IE's so zu verbessern, dass es weiterhin funktioniert?

                                        Sorry das ich soooo viele Fragen habe, aber das ist definitiv ein neues aber interessantes und auch wichtiges Thema, dass ich diese, für mich, wichtigen Fragen stellen muss.

                                        LG Romero

                                        1. Hallo romero,

                                          der Validator hilft dir, valides HTML und CSS zu schreiben. Ob das dann in allen Browsern gleich aussieht, ist eine andere Sache. Aber valider Code ist eine gute Basis. Die Browser interpretieren validen Code zwar nicht immer gleich, aber bei invalidem Code schlägt die Fehlerkorrektur zu, und die liefert dann wirklich individuelle Ergebnisse.

                                          Das mit den Tags, die nicht geschlossen werden müssen/dürfen, musst du einfach hinnehmen. Ich habe da die Logik auch noch nicht verstanden. Wichtig sind hier auch die feinen Unterschiede bei den doctypes:

                                          html 4.1: <input ...>, <br>
                                          xhtml: <input ... />, <br />
                                          html (5): egal

                                          Gruß, Jürgen

                                          1. Hallo,

                                            Das mit den Tags, die nicht geschlossen werden müssen/dürfen, musst du einfach hinnehmen. Ich habe da die Logik auch noch nicht verstanden.

                                            die ist aber eigentlich ganz einfach. Es gibt Elemente, die per definitionem keinen Inhalt haben _dürfen_, etwa br, hr, input oder img. Diese Elemente werden daher in HTML ohne schließendes Tag notiert. Wenn man nicht auf XHTML eingehen möchte, ist die Geschichte damit schon abgehakt.

                                            XHTML ist von XML abgeleitet, und XML ist streng systematisch und kennt keine Extrawürste für die genannten Beispiele leerer Elemente - sie _müssen_ geschlossen werden, obwohl sie gar keinen Inhalt haben _dürfen_. In XHTML wäre <input></input> daher formal korrekt, aber problematisch - siehe unten.

                                            XML kennt eben für leere Elemente auch die Kurznotation <element />, die öffnendes und schließendes Tag zugleich ist. Genau diese Form wird in XHTML empfohlen für Elemente, die keinen Inhalt haben dürfen - weil wohl so mancher Tagsoup-Parser mit <br></br> auf die Klappe fällt und zwei br-Elemente erkennt.
                                            Umgekehrt sollte man bei Elementen, die einen Inhalt haben dürfen, die Kurzschreibweise auch dann nicht verwenden, wenn das Element ausnahmsweise mal leer ist, weil die einfachen HTML-Parser dann kein End-Tag finden. Also beispielsweise <script ...></script> immer ausschreiben, weil sonst der gesamte nachfolgende Dokumentinhlat von manchen Browsern noch als Teil des Scripts interpretiert wird.

                                            Wichtig sind hier auch die feinen Unterschiede bei den doctypes:
                                            html 4.1: <input ...>, <br>

                                            Es gibt kein HTML 4.1, du meinst vermutlich 4.0 und 4.01.

                                            html (5): egal

                                            Die Klammer bitte weglassen! Nur bei HTML ist wirklich beides ausdrücklich erlaubt.

                                            Ciao,
                                             Martin

                                            --
                                            Der Sinn einer Behörde besteht in ihrer Existenz.
                                              (alte Beamtenweisheit)
                                            Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                            1. Hallo Der,

                                              die ist aber eigentlich ganz einfach.

                                              <input type="button" value="ok" >  
                                                
                                              <button type="button">ok</button>
                                              

                                              Gruß, Jürgen

                                              1. Hi,

                                                die ist aber eigentlich ganz einfach.

                                                <input type="button" value="ok" >

                                                <button type="button">ok</button>

                                                  
                                                ja, passt doch: input ist ein leeres Element, das keinen Inhalt haben \_darf\_, button dagegen darf Inhalt haben, also muss das Ende erkennbar sein - durch das End-Tag.  
                                                  
                                                Ciao,  
                                                 Martin  
                                                
                                                -- 
                                                Chef zum Bewerber: Es gibt zwei Dinge, auf die ich allergrößten Wert lege. Das eine ist Sauberkeit! Haben Sie übrigens die Schuhe auf der Matte abgetreten? - Ja, selbstverständlich. - Gut. Das andere ist uneingeschränkte Ehrlichkeit. Übrigens, draußen liegt gar keine Fußmatte.  
                                                Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                                
                                                1. Hi,

                                                  die ist aber eigentlich ganz einfach.

                                                  <input type="button" value="ok" >

                                                  <button type="button">ok</button>

                                                  
                                                  >   
                                                  > ja, passt doch: input ist ein leeres Element, das keinen Inhalt haben \_darf\_, button dagegen darf Inhalt haben, also muss das Ende erkennbar sein - durch das End-Tag.  
                                                  >   
                                                  > Ciao,  
                                                  >  Martin  
                                                  >   
                                                    
                                                  Gibt es da eine Seite wo man solche Elemente findet, die Inhalt haben dürfen oder nicht? Also ne Art Übersicht?  
                                                    
                                                  Also sind beide Varianten z.B. von <input></input> bzw. nur <input> korrekt.  
                                                    
                                                  LG Romero
                                                  
                                                  1. Hallo,

                                                    Gibt es da eine Seite wo man solche Elemente findet, die Inhalt haben dürfen oder nicht? Also ne Art Übersicht?

                                                    am besten die jeweiligen Spezifikationen von HTML 4.01 oder XHTML 1.0, genauer: deren DTDs. Ob die HTML-5-Spec ähnlich ergiebig ist, weiß ich nicht (will ich auch gar nicht wissen).

                                                    Etwas gerafft und nicht unbedingt aktuell auch in SELFHTML.

                                                    Also sind beide Varianten z.B. von <input></input> bzw. nur <input> korrekt.

                                                    Hab ich doch lang und breit erklärt:
                                                     <input>          ist in HTML 4.01 korrekt (ohne schließendes Tag).
                                                     <input />        ist in XHTML korrekt und wird in HTML von allen mir geläufigen Browsern ebenfalls
                                                                      ohne Probleme verstanden
                                                     <input></input>  ist in XHTML korrekt, macht aber bei einigen Browsern Stress.

                                                    Ciao,
                                                     Martin

                                                    --
                                                    Wer mit dem Finger droht, sollte ihn am Abzug haben, und nicht in der Nase.
                                                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
                                                    1. Tach!

                                                      Etwas gerafft und nicht unbedingt aktuell auch in SELFHTML.

                                                      Aktuell, aber ohne HTML5, ebenfalls in SELFHTML. (Direkt aus der offiziellen DTD erzeugt, sollte also (hoffentlich) stimmen.)

                                                      Die Referenz im alten SELFHTML ist eigentlich auch aktuell, an der DTD hat sich ja nichts mehr geändert, seit damals.

                                                      dedlfix.

                                                2. Hallo Der,

                                                  Hi,

                                                  die ist aber eigentlich ganz einfach.

                                                  <input type="button" value="ok" >

                                                  <button type="button">ok</button>

                                                  
                                                  >   
                                                  > ja, passt doch: input ist ein leeres Element, das keinen Inhalt haben \_darf\_, button dagegen darf Inhalt haben, also muss das Ende erkennbar sein - durch das End-Tag.  
                                                    
                                                  mir ist schon klar, dass inhaltsleere Elemente kein Endttag haben. Mir ist auch klar, das input inhaltsleer ist und button nicht. Aber warum? Und antworte jetzt bitte nicht "weil button kein value hat". :)  
                                                    
                                                  Gruß, Jürgen  
                                                  
                                                  
                                                  1. Hallo,

                                                    mir ist schon klar, dass inhaltsleere Elemente kein Endttag haben. Mir ist auch klar, das input inhaltsleer ist und button nicht. Aber warum? Und antworte jetzt bitte nicht "weil button kein value hat". :)

                                                    nein, tu ich nicht. Aber wenn du _so_ weit zurückgehst, die Spec mit "warum" zu hinterfragen, dann kann ich nur sagen: "Des isch halt so." Technische Spezifikationen enthalten oft willkürliche (oder zumindest scheinbar willkürliche) Festlegungen, die sicher nicht in jedem Fall sinnvoll sind.

                                                    Ciao,
                                                     Martin

                                                    --
                                                    Wie kann es sein, dass ich von 100 Gramm Schokolade zwei Kilo zunehme?
                                                    Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        2. Hallo,

          Es ist schon interessant genug, dass es sich nur um einen IE 8 und keinen 9er handelt.

          das ist wiederum nicht verwunderlich, denn der IE8 ist der "neueste" IE, der gerade noch unter XP installierbar ist.

          Ciao,
           Martin

          --
          Progress (n.): Process through which USENET evolved from smart people in front of dumb terminals to dumb people in front of smart terminals.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Moinsen!

            Es ist schon interessant genug, dass es sich nur um einen IE 8 und keinen 9er handelt.

            das ist wiederum nicht verwunderlich, denn der IE8 ist der "neueste" IE, der gerade noch unter XP installierbar ist.

            Ja. XP. Ich gehe davon aus dass es sich um ein neues System handelt und das es deshalb mit Win 7 bestueckt ist. Das heisst, dass jeder ausgetauschte PC dieses Problem bekommen wuerde.

            --
            Signaturen sind blöd!
            1. Ja. XP. Ich gehe davon aus dass es sich um ein neues System handelt und das es deshalb mit Win 7 bestueckt ist. Das heisst, dass jeder ausgetauschte PC dieses Problem bekommen wuerde.

              Hallöchen,

              und an diesem Problem bin ich ja nun dran. Aber wie später zu ersehen ist (zum Nachschlagen), werden ja die CSS-Anweisungen unter IE8 anders dargestellt wie unter IE6.

              Wie muss ich also nun CSS so deklarieren, dass es unter IE8 so aussieht wie unter IE6 oder anders gefragt: Warum werden z.B. 2 verschiedene Werte (mittels Javascript) ausgegeben bei ein und der selben Sache?

              Bsp. 1:

              alert( document.body.offsetHeight ); ergibt einmal (wenn ich es wie bisher lasse, also ohne DOCTYPE oder ähnliches) 1140px und bei ~~~html <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
                "http://www.w3.org/TR/html4/loose.dtd">

                
              Dieser Befehl offsetHeight ergibt ja die "body"-Höhe. Da ich ja diese HTA im Vollbildmodus habe, sollte er auch die 1140px ausgeben (bei mir jedenfalls). Tut er aber nur bei meiner, noch nicht für IE8 konzipierten Seite.  
                
              LG Romero