none
VS2012: Fehler in Navigations-App?

    Frage

  • Hallo,

    VS Express 2012 f. Win 8, neues Projekt, JavaScript, WindowsStore, Navigation-App.

    Gem. dem Beispiel unter http://msdn.microsoft.com/de-de/library/windows/apps/jj663505.aspx habe ich dem Projekt eine neues Seitensteuerelement hinzugefügt. Allerdings habe ich der neuen Seite eine Zahl (401.html) als Dateiname gegeben. VS hat diese Seite angelegt, dazu auch die CSS- und die JS-Datei. Alles hat zunächst normal ausgesehen, bis zu den Punkt wo ich in der 401.js Code in die ready-Funktion eingebaut habe:

            ready: function (element, options) {
                // TODO: Die Seite hier initialisieren.
                debugger
            }

    Dieser Code wurde nie ausgeführt. Nach einiger Suche ist mir dann folgendes aufgefallen: An einigen Stellen im automatisch erzeugtem Code hat VS aus 401 ein _401 gemacht:

    401.html, Zeile 17: <div class="_402 fragment">
    401.js, Zeile 6: WinJS.UI.Pages.define("/pages/402/_402.html", {
    401.css, Zeile 1: ._401 p {

    Den Unterstrich nachträglich zu entfernen bringt nichts, weil so zumindest dieClass-Definition in der css ungültig wird. Was hingegen funktioniert, ist das Umbenennen der Dateien in _401.* Natürlich müssen dann auch die Verweise in der HTML-Datei geändert werden.

    Besser ist natürlich Zahlen als Dateiname zu vermeiden.

    Hoffe ich habe die Zusammenhänge richtig erkannt.

    Schönen Gruß
    W. Wolf


    • Bearbeitet W. Wolf Sonntag, 25. November 2012 15:11 kleine Ergänzung
    Sonntag, 25. November 2012 15:09

Alle Antworten

  • Bin jetzt nicht so oft bei CSS unterwegs, aber wäre den eine class-Bezeichnung beginnend mit einer Ziffer überhaupt gültig?

    Laut diesem Link nicht.

    Gruß

    Ralf

    Montag, 26. November 2012 08:50
  • Bin jetzt nicht so oft bei CSS unterwegs, aber wäre den eine class-Bezeichnung beginnend mit einer Ziffer überhaupt gültig?

    Eben nicht. Deshalb schreibt VS den Unterstrich vor die Zahl. Aber anscheinend nicht konsequent genug (oder zu konsequent, wie man es halt sehen will). Folglich funktioniert WinJS.UI.Pages.define("/pages/402/_401.html" so nicht mehr. Ich schätze dass das ein Fehler in VS ist.

    Schönen Gruß
    W. Wolf

    Montag, 26. November 2012 11:20
  • WinJS.UI.Pages.define("/pages/402/_401.html"

    Sollte natürlich WinJS.UI.Pages.define("/pages/401/_401.html" sein. Sehe gerade, dass ich die Zahlen auch im ersten Thread durcheinander gewürfelt habe - denkt euch am besten überall eine 401 hin ;-)

    Schönen Gruß
    W. Wolf

    Montag, 26. November 2012 11:23
  • ...Aber anscheinend nicht konsequent genug (oder zu konsequent, wie man es halt sehen will). Folglich funktioniert WinJS.UI.Pages.define("/pages/402/_401.html" so nicht mehr. Ich schätze dass das ein Fehler in VS ist...

    Sehe ich auch so, wobei der "Anfangsfehler" vor dem Bildschirm sitzt :)

    Besser wäre es sicher, wenn VS eine Fehlermeldung bzgl. des ungültigen Namens geben würde (anstatt nicht mit voll Konsequenz die Namen zu ändern).

    Gruß

    Ralf

    Montag, 26. November 2012 11:42
  • Sehe ich auch so, wobei der "Anfangsfehler" vor dem Bildschirm sitzt :)

    Das mag sicher vorkommen, aber nicht in diesem Fall. Schließlich sind Zahlen als Dateiname erlaubt, deshalb sind diese nicht "ungültige Namen". Dass VS daraus eine CSS-Klasse ableitet und das dann fehlerhaft umsetzt, kann wohl kaum dem Anwender zugeschrieben werden.

    Gruß
    W. Wolf

    Montag, 26. November 2012 12:24
  • Das sehe ich etwas anders: das &-Zeichen und Leerzeichen sind z.B. auch gültige Zeichen für Dateinamen, werden jedoch auch zu ungültigen CSS-Klassen führen.

    Fühl Dich aber bitte nicht persönlich angegriffen, der Teufel liegt hier im JavaScript-Detail.

    Gruß

    Ralf

    Montag, 26. November 2012 12:37