• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[FRAGE] intellij -> Visual Studio 2017 (UWP) - Probleme mit body.onload

dasmein

New member
Hallo,
Ich wollte mein kleines Projekt, bestehend aus HTML,JavaScript und CSS, nach Visual Studio übertragen um dort eine UWP-App zu erstellen. Das Problem hierbei ist, dass das <body onload="funktion"> hier nicht mehr funktioniert, es tut sich einfach nichts. Was muss ich stattdessen machen, damit ich beim laden der index.html eine entsprechende Funktion aufrufen kann. Altert funktioniert hier auch nicht wie gewöhnlich, aber da bin ich schon auf eine Lösung gekommen:

Code:
 var messageDialog = new Windows.UI.Popups.MessageDialog("Hello, world!", "Alert");
     messageDialog.showAsync()
Ich bedanke mich schon mal und schönes Wochenende!


Edit\ Gut, dass mit dem <body onload> habe ich so lösen können:
Code:
window.onload = function () {
    initial();
 }
Ich habe aber ein anderes Problem! Zwar habe ich durch Windows.UI.Popups eine alternative zu alert gefunden, jedoch habe ich gemerkt, dass dies leider nicht blockiert. Es wird also der nachstehende Code beim Popup dennoch ausgeführt. Unter
https://stackoverflow.com/questions/13652413/what-is-the-alternative-to-alert-in-metro-apps
habe ich zwar einen Lösungsvorschlag gefunden (erste Antwort), jedoch funktioniert dies bei mir nicht, oder ich mache was falsch!
Code:
funktion test (){
(function () {
    var alertsToShow = [];
    var dialogVisible = false;

    function showPendingAlerts() {
        if (dialogVisible || !alertsToShow.length) {
            return;
        }

        dialogVisible = true;
        (new Windows.UI.Popups.MessageDialog(alertsToShow.shift())).showAsync().done(function () {
            dialogVisible = false;
            showPendingAlerts();
        })
    }
    window.alert = function (message) {
        if (window.console && window.console.log) {
            window.console.log(message);
        }

        alertsToShow.push("test");
        showPendingAlerts();
    }
})();
Einzige was ich geändert habe ->
Code:
alertsToShow.push("test");
Es tut sich nichts und bekomme keine Fehlermeldung.
 
Zuletzt bearbeitet:
Was willst du denn mit dem alert blockieren. Der gezeigte Code funktioniert ja nur, wenn man einfach mehrere alerts hintereinander anzeigen will. Wenn du irgendwas anderes ausführen willst, musst du das in der .done-Funktion machen.
 
Hallo, ich habe mal kurz ein kleines Beispiel erstellt in der mein Problem ganz gut ersichtlich ist. Mit der .done-Funktion komme ich hier leider nicht weit. Es sind im prinzip 2 Funktionen vorhanden. Eine Funktion1 ruft mitten im Codeteil die Funktion2 auf und der restliche Codeteil von Funktion1 soll erst dann weiter ausgeführt werden, wenn Funktion1 komplett durchlaufen ist bzw. wie einem Fall die Messagebox (die ganz am Ende steht), geschlossen wurde:

Code:
function alert(text) {
    var messageDialog = new Windows.UI.Popups.MessageDialog(text);
    messageDialog.showAsync();
  }
func1(){
    x = 1;
    document.getElementById("text").innerHTML = x;
    func2();
    x = 2;
    document.getElementById("text").innerHTML = x;
}

func2() {
    //Irgendein Code
    msgalert("ICH WARTE BIS ICH GESCHLOSSEN WURDE");
}
Hier in dem Fall darf erst die 2 ins Document geschrieben werden nachdem die Messagebox geschlossen wurde.
 
Du musst die Funktion 1 dann aufspalten. Den Teil nach dem Aufruf von 2 musst du in eine separate Funktion packen (kann ja auch eine anonyme Funktion sein).
 
Zurück
Oben