 |
AutoHotkey Community Wir helfen uns gegenseitig aus der Patsche
|
| Vorheriges Thema anzeigen :: Nächstes Thema anzeigen |
| Autor |
Nachricht |
DerRaphael
Anmeldedatum: 09.01.2008 Beiträge: 883 Wohnort: Zuhause
|
Verfasst am: Fr Feb 29, 2008 7:04 pm Titel: |
|
|
chucky, kannst du dafür eine quelle nennen? unter http://de.wikipedia.org/wiki/JavaScript zum beispiel steht, dass MSIE ab v5 JavaScript (nach ISO standardisiertes ECMA-Script) unterstützt.
lediglich die bezeichnung JavaScript ist eine von Sun eingetragene Marke. Der Standard hingegen ist offen.
unter http://www.ecma-international.org/memento/ordinary.htm kannst du dir angucken, dass selbst microsoft ein mitglied bei ECMA ist. _________________
|
|
| Nach oben |
|
 |
Tuncay
Anmeldedatum: 28.10.2006 Beiträge: 127 Wohnort: Berlin
|
Verfasst am: Fr Feb 29, 2008 8:34 pm Titel: |
|
|
Ich benutze (soweit ich weis, nach SelftHTML) nur Methoden und Elemente aus JavaScript, keine Microsoft spezifischen Funktionen aus JScript. JScript selbst ist soweit ich weis funktionell abwärtskompatibel zu JavaScript und bietet nur ein paar Features (die nicht ungefährlich sind) mehr.
Ich habe auf meinem Rechner Windows XP Service Pack 2 mit Internet Explorer 6 drauf. Standardmäßig wird da JavaScript blockiert. In diesem Stadium zeigt es das Dokument wie von Firefox gewohnt an. Gebe ich die Verarbeitung von JavaScript frei, spielt er verrückt und zeigt mir statt dessen nur noch einen "Unerwarteten Fehler" an. Na toll.
Ich glaube auch nicht, das es an der JavaScript Datei selbst liegt. Ich habe schon einige Kombinationen ausprobiert, wo ich die Funktionen mit Dummies ersetzt habe, die eigentlich keine Fehler verursachen dürften.
Ich habe den leisen Verdacht, das der IE tatsächlich damit nicht klar kommt, weil es ursprünglich ja so nicht dafür entwickelt wurde.
Was alles verarbeitet wird
- Das XML Dokument ist die Quelle mit den Inhalten. Diese wird ohne weitere Dateien im Browser mit Standard StyleSheet angezeigt, mit allen Elementen und so weiter.
- Nun kommt XSLT ins Spiel. Diese XSL Datei ist ein StyleSheet speziell für XML Dokumente. Damit lassen sich auch XML Formate in andere XML Formate umwandeln, in Echtzeit! Hier habe ich nun das ahkml-Format in HTML umgewandelt, damit der Browser sie wie ein normales HTML behandelt und anzeigt.
- Mit CSS kann ich so auf natürliche Weise wie gewohnt alles umformatieren. Das alles ist nur für die anzeige bisher. Bis dahin lief alles gut und ohne Probleme.
- Jetzt habe ich mir ein JavaScript entworfen, welches durch Standard-Methoden und Elemente auf das Formular zugreift und das Dokument entsprechend den Angaben des Benutzers dynamisch verändert. Diese Veränderungen sind hauptsächlich Filter um bestimmte Skripte auszublenden.
- Und der IE will einfach nichts anzeigen, während es beim Firefox kein Problem gibt. Ich glaube, das der IE diese Kombination aus dynamisch erzeugtem HTML durch XSL und dann noch JavaScript nicht mag.
_________________ Manchmal ist es /falsch/ das "richtige" zu tun. |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 624 Wohnort: Powerland
|
Verfasst am: Sa März 01, 2008 3:43 pm Titel: |
|
|
@DerRaphael
| DerRaphael hat Folgendes geschrieben: | | chucky, kannst du dafür eine quelle nennen? | Zunächst: Ich habe vor meinem Post nicht extra recherchiert, sondern aus dem Nähkästchen erzählt.
Vor ein paar Jahren erstellte ich zwei Online-Shops mit JavaScript, weil sie ohne serverseitige Scripts auskommen mußten. Für Netscape und Firefox gabs bei der Erstellung keine Schwierigkeiten, nur bildete der IE ab Version 4 die Dokumentenstruktur in seinem DOM abweichend ab, siehe auch hier. Der Stamm document. war noch gleich, die Zweige aber nicht mehr (Beispiele). So mußte immer beim Scriptstart anhand des Vorhandenseins bestimmter Dokument-Elemente der Browser festgelegt werden, um später die passenden J(ava)Script-spezifische Befehle/Variablen zu verwenden.
Die von IE2 benutzte Script-Sprache war ursprünglich JavaScript, wurde dann aber (natürlich) von Microsoft proprietär verändert. Diese Version durfte sich wegen | Der Rapael hat Folgendes geschrieben: | | lediglich die bezeichnung JavaScript ist eine von Sun eingetragene Marke. | nicht JavaScript nennen, daher der Name JScript (siehe: "JavaScript - Einführung, Programmierung und Referenz" von Stefan Koch, dpunkt-Verlag, übrigens ein empfehlenswertes Buch, @Tuncay!). Auch der IE6 verwendet JScript, und dies ist die Script-Version, auf die ich mich in meinem Hinweis beziehe.
| Chucky hat Folgendes geschrieben: | | Das kann daran liegen, daß der IE nicht JavaScript, sondern JScript benutzt. | Gegendarstellung: Richtig ist viel mehr, daß der Internet Explorer auch JavaScript benutzt.
Vorausgesetzt, man akzeptiert verschiedene Definitionen von "JavaScript". Hier ist ein interessanter Thread aus dem SelfHTML-Forum dazu, mit entsprechenden Links.
| Der Raphael hat Folgendes geschrieben: | ... dass MSIE ab v5 JavaScript (nach ISO standardisiertes ECMA-Script) unterstützt.
...
Die ursprüngliche Grundfunktionalität von JavaScript ist heute als ECMAScript oder ECMA-262 standardisiert und wird von den meisten Browsern weitgehend unterstützt (JavaScript in der Version 1.5 entspricht ECMA-262 Version 3). | Heißt das, das es nicht an der Verwendung von JScript liegen kann? So ein Ausschluß würde evtl. weiterhelfen.
Zwischen JavaScript, JScript und ECMAScript gibt es lediglich (versionsabhängige) Schnittmengen, nicht aber Untermengen. "Unterstützt", "weitgehend" oder "Teile von" heißt nicht "vollständig implementiert". Daher nützt eine Mitgliedschaft Microsofts als Ordinary Member bei ecma-international in Grenzfällen wenig. Aus der Beschreibung | Zitat: | | Ordinary members are companies which have interest and experience in matters related to one or more Technical Committees of the Association, and which wish to exert the right to vote at the General Assembly and to exert other exclusive rights defined in the By-laws and Rules. | leitet sich ein gewisses Anhörungsrecht ab, aber keine Verpflichtung für ein bestimmtes Browserverhalten.
| Tuncay hat Folgendes geschrieben: | | JScript selbst ist soweit ich weis funktionell abwärtskompatibel zu JavaScript | Oi, oi, oi, oi, oi ... interessante Hypothese
| Tuncay hat Folgendes geschrieben: | | Gebe ich die Verarbeitung von JavaScript frei, spielt er verrückt und zeigt mir statt dessen nur noch einen "Unerwarteten Fehler" an. Na toll. | OS und Browser sind bei mir die gleichen wie bei Dir, aber meiner spielt nicht verrückt, sondern zeigt die Seite ganz normal an. Die Filter-Funktion arbeitet aber nur beim Firefox; beim IE wird der Bilschirm neu aufgebaut, und in der Statuszeile steht "Fehler auf der Seite." Vielleicht nützt ein Vergleich der IE-Einstellungen, kannst Du mal Screenshots zeigen?
Wenn Dein IE nicht mehr "rumspinnt", untersuchen wir gleich die erste Zeile der Funktion ScriptApplyFilter() aus ahkml2html.js: | Code: | | var ScriptCount = document.getElementsByName("depot")[0].childNodes.length; |
Mein IE6 erkennt dieses Element nicht - bzw. anders als der Firefox, so daß er auch nicht auf die childs zugreifen kann. Sobald er auf ein nicht vorhandenes Dokument-Element zugreift, scheint er das Script abzubrechen, mit der o.g. Fehlermeldung.
__________________________________________
Created with BBCodeWriter 7.0 - the one and only  |
|
| Nach oben |
|
 |
Tuncay
Anmeldedatum: 28.10.2006 Beiträge: 127 Wohnort: Berlin
|
Verfasst am: Sa März 01, 2008 9:54 pm Titel: |
|
|
Etwas Geschichte tut immer gut.
Nun, ich bin im Moment in einem Internet Cafe; von daher gibts da erstmal kein Screen. Auf diesem Rechner ist ebenfalls XP mit SP 2 installiert und auch ein IE6 findet sich hier. Ich habe mal die Seite online aufgerufen und siehe da, es gibt keinen "unerwarteten Fehler" mehr. Ich schätze mal, das es was mit den Sicherheitseinstellungen zu tun hat. Womöglich habe ich daheim so eingestellt, das der IE nach jedem JS Fehler sofort abbrechen soll ...
Wie auch immer. Hier zeigt mir der IE ebenfalls dieselbe Fehlermeldung wie bei dir an, Chucky.
| Zitat: | | var ScriptCount = document.getElementsByName("depot")[0].childNodes.length; |
Ich werde mich zuhause sofort an die Arbeit machen und nach dieser Ursache suchen.
| Chucky hat Folgendes geschrieben: |
| Tuncay hat Folgendes geschrieben: | | JScript selbst ist soweit ich weis funktionell abwärtskompatibel zu JavaScript |
Oi, oi, oi, oi, oi ... interessante Hypothese Shocked Wink |
Hätte ja sein können.
Chucky, vielen dank für deine Mühen. Ich war schon sehr verzweifelt ... und dann kamst du auf einmal!
Was das Buch angeht, danke für den Tipp. Ich werde mir vorerst zwar kein Buch kaufen, aber wenn ... dann schau ich mir das mal an. Gut das du mich daran erinnerst. Ich schaue mich mal in der Bibliothek nach einem um. Durch SelfHTML hab ich schon die Grundlagen gelernt. Ich will mehr. Blut geleckt. _________________ Manchmal ist es /falsch/ das "richtige" zu tun. |
|
| Nach oben |
|
 |
Tuncay
Anmeldedatum: 28.10.2006 Beiträge: 127 Wohnort: Berlin
|
Verfasst am: So März 02, 2008 5:56 pm Titel: |
|
|
Ich habe jetzt herausgefunden, das die Zeile
| Zitat: | | document.getElementsByName("depot")[0].childNodes.length; |
im IE zwei Probleme verursacht.
Das erste Problem ist eigentlich ein ganz natürliches. Ich habe nämlich das "name"-Attribut auch <div> containern vergeben, aber laut SelfHTML ist das nicht standardkonform. Das "name"-Attribut ist (wie ich falsch gedacht hatte) kein Universal-Attribut wie das "id".
In meiner durch XSL erzeugten HTML Baumstruktur habe ich einiges auf dieses Attribut aufgebaut und es könnte schwierig werden alles noch mal anzupassen. Ich wollte ja zuerst "name" durch "id" ersetzen, aber jede "id" muss einzigartig sein. Es wäre eigentlich einfach, eben einen index an die id anzufügen, aber in XSL weis ich nicht, ob das möglich ist.
Soweit irgendwann dieses Problem gelöst wäre, würde "childNodes" ebenfalls Probleme verursachen. Denn "childNodes" kann unter dem IE einen falschen Inhalt liefern.
Im Moment habe ich kein Plan, wie ich das ganze unter dem IE zum laufen bringen soll. Ich brauche gute Ideen, aber ganz schnell!  _________________ Manchmal ist es /falsch/ das "richtige" zu tun. |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 624 Wohnort: Powerland
|
Verfasst am: So März 02, 2008 8:55 pm Titel: |
|
|
| Tuncay hat Folgendes geschrieben: | Ich brauche gute Ideen, aber ganz schnell!  | Ob sie gut sind, steht erst fest, wenn sie Dein Problem gelöst haben (ähnlich der Frage, ob Schrödingers Katze tot ist ).
Im Moment scheint mir der Teufel im Detail zu stecken, vielleicht gibt es keine Lösung, die ohne Änderung Deiner XML-Struktur auskommt.
Grundsätzlich: Entweder eine Lösung für beide Browser (wäre ideal), oder 2 browserabhängige Lösungen, d. h. mit getrennten JS-Funktionen und/oder Dateien.
Ich werde mir das mal ansehen, muß mich aber erst etwas in XML einlesen.
Ein paar methodische Möglichkeiten:
- Der DOM-Inspector von Firefox fällt mir ein, der wird aber wohl nicht viel bringen, mit Firefox klappt's ja. Es gibt auch noch einen DOM-Inspector für den IE.
- Forensuche nach ähnlichen Problemen (gut, aber nicht schnell)
- Mit Konstruktionen wie
| Code: | var ScriptCount = document.getElementsByName("depot")[0]; //.childNodes.length;
document.write("ScriptCount: " + ScriptCount); | den JavaScript-Code debuggenähnliche Anwendungen im WWW suchen (IE + XML) und vergleichenevtl. dafür Google-Code-Suche benutzen
__________________________________________
Created with BBCodeWriter 7.0 - the one and only  |
|
| Nach oben |
|
 |
Tuncay
Anmeldedatum: 28.10.2006 Beiträge: 127 Wohnort: Berlin
|
Verfasst am: So März 02, 2008 9:10 pm Titel: |
|
|
| Zitat: | | Im Moment scheint mir der Teufel im Detail zu stecken, vielleicht gibt es keine Lösung, die ohne Änderung Deiner XML-Struktur auskommt. |
Ich wüsste nicht, wieso ich an der XML Struktur ändern sollte?! Das JavaScript greift ja nicht direkt auf die XML zu sondern auf den durch XSL dynamisch generierten HTML Inhalt. Wie in meine obigen Post zu lesen ist, denke ich den Fehler gefunden zu haben.
IE scheint mit "name"-Attribute nicht in allen Elementen klar zu kommen. (in HTML) _________________ Manchmal ist es /falsch/ das "richtige" zu tun. |
|
| Nach oben |
|
 |
Chucky
Anmeldedatum: 07.01.2006 Beiträge: 624 Wohnort: Powerland
|
Verfasst am: So März 02, 2008 10:09 pm Titel: |
|
|
| Gibt es eine Möglichkeit, den HTML-Code anzeigen zu lassen, den sich ein Browser aus den X??-Dateien erzeugt? |
|
| Nach oben |
|
 |
Tuncay
Anmeldedatum: 28.10.2006 Beiträge: 127 Wohnort: Berlin
|
Verfasst am: So März 02, 2008 10:51 pm Titel: |
|
|
Ja, man könnte theoretisch mit dem Browser "Speichern unter..." machen oder besser, mit einem externen Parser wie "AltovaXML" die HTML Dateien erzeugen lassen.
Habe gerade das Programm nicht zur Hand, könnte ja mal demnächst das auch versuchen. Ich hatte allerdings das mal versucht, aber dann funzte das JavaScript auch beim Firefox nicht mehr.
Ich denke da gibt es einiges an Arbeit. _________________ Manchmal ist es /falsch/ das "richtige" zu tun. |
|
| Nach oben |
|
 |
Tuncay
Anmeldedatum: 28.10.2006 Beiträge: 127 Wohnort: Berlin
|
Verfasst am: So März 02, 2008 11:39 pm Titel: |
|
|
Ich bin gerade auf einige interessante Add-ons auf der Firefox Extensions Page gestoßen:
- Firebug (extrem umfangreicher und nützlicher JavaScript Debugger)
- Web Developer
- XML Web Developer Toolbar (hat mir doch nicht gefallen)
- XSL Results (kann ich sehr empfehlen, um den aktuell generierten Inhalt zu inspizieren)
Außerdem teste ich mal demnächst SAXON, einem XSLT Prozessor. _________________ Manchmal ist es /falsch/ das "richtige" zu tun. |
|
| Nach oben |
|
 |
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten.
|
Powered by phpBB © 2001, 2005 phpBB Group Deutsche Übersetzung von phpBB.de
|