2015-04-28 7 views
7

Lassen Sie mich erklären: Wenn Sie eine alert() in JS aufrufen, wird der gesamte Code unten in der Warnung, und wenn Sie in Ok klicken , der Code gibt Arbeit zurück.Stoppen Sie den gesamten Code und fahren Sie danach fort, wie eine alert() in JS

ich meine eigene benutzerdefinierte Benachrichtigung mit diesem Code machen:

function cAlert() 
{ 
var bOn; 
this.show = function (content) 
{  
    bOn = true; 
    document.write('<div id="turnOffLight"></div><div id="cAlertBox"><div id="cAlertImageBox"><img style="position: absolute; top: 54%; left: 50%; margin-top: -32px; margin-left: -32px;" src="Images/Vectors/1429744831_678136-shield-warning-64.png" alt=""/> </div><div id="cAlertContentBox"> </div><div id="cAlertButtonBox"><input id="cAlertButtonStyle" type="button" value="OK" onclick="cAlert.ok()" /></div></div>'); 
    $("#cAlertContentBox").html(content); 
    $("#cAlertBox").show(); 
    $("#turnOffLight").fadeIn("fast"); 

    var div = document.getElementById('cAlertBox').offsetWidth; 
    var res = -Math.abs(div/2); 
    document.getElementById('cAlertBox').style.marginTop = res + "px"; 
}; 
this.ok = function() 
{ 
    $("#cAlertBox").hide(); 
    $("#turnOffLight").fadeOut("medium"); 
    bOn = false; 
}; 
} 

und in den anderen Seiten:

<head> 
    <script src="Scripts/jQuery_1.11.2.js" type="text/javascript"></script> 
    <script src="Scripts/cAlertScript.js" type="text/javascript"></script> 
    <script type="text/javascript">var cAlert = new cAlert();</script> 
</head> 

aber ich habe ein Problem, in Login-Seite nach Aufruf die cAlert(), ich nenne das:

echo "<script>javascript:history.go(-1)</script>"; 

um zur letzten Seite zurückzukehren, wenn ich den alert() verwendet habe, erst nachdem der Benutzer in ok geklickt hat, kehrt der Browser zur letzten Seite zurück, aber mit cAlert kehrt der Browser bereits zur letzten Seite zurück.

Was ich will ist, dass der Benutzer auf OK klicken muss, um den Code als Alert() fortzufahren.

+1

Dies ist in JS einfach unmöglich, außer für die nativen Funktionen 'alert()', 'confirm() ', und' prompt() '. Nur diese haben die Möglichkeit, den Ausführungsthread zu stoppen. Es sei denn, Sie möchten Ihre eigene JavaScript-Engine schreiben, die die Ausführung auch bei einer anderen Funktion stoppt ...: P +1 für eine gut geschriebene Frage. – Scimonster

Antwort

0

Da die Seite nur zurückgehen soll, nachdem die Schaltfläche OK geklickt wurde, platzieren Sie den Funktionsaufruf oder -code, um in die Funktion cAlert.ok() zurückzukehren. Auf diese Weise wird die Seite nur zurückgehen, wenn der Benutzer auf die Schaltfläche OK geklickt hat, da diese Funktion nur aufgerufen wird, wenn der Benutzer auf die Schaltfläche OK klickt.

this.ok = function() 
{ 
    $("#cAlertBox").hide(); 
    $("#turnOffLight").fadeOut("medium"); 
    bOn = false; 

    window.history.go(-1); 
}; 
+0

Dies wird nicht für mich dienen, weil ich diese Warnung auf anderen Seiten verwenden möchte, und nicht immer, ich muss auf die letzte Seite zurückkehren ... –

+0

@ JuniorVenâncio: Dann übergeben Sie einen Rückruf an 'cAlert' ... – Bergi

2

ändern cAlert.show(content)-cAlert.show(content, success). Ändern Sie cAlert.ok() zu cAlert.ok(' + success + '). Ändern Sie this.ok = function() in this.ok = function (success), und fügen Sie schließlich success(); am Ende der ok()-Funktion hinzu.

Dies ruft success auf, wenn auf die Schaltfläche in der cAlert geklickt wird.

Anstatt cAlert.show("text") aufzurufen, müssen Sie jetzt cAlert.show("text", function() { javascript:history.go(-1); }) anrufen.


So sollte Ihr Code jetzt sein:

function cAlert() 
{ 
var bOn; 
this.show = function (content, success) 
{  
    bOn = true; 
    document.write('<div id="turnOffLight"></div><div id="cAlertBox"><div id="cAlertImageBox"><img style="position: absolute; top: 54%; left: 50%; margin-top: -32px; margin-left: -32px;" src="Images/Vectors/1429744831_678136-shield-warning-64.png" alt=""/> </div><div id="cAlertContentBox"> </div><div id="cAlertButtonBox"><input id="cAlertButtonStyle" type="button" value="OK" onclick="cAlert.ok(' + success + ')" /></div></div>'); 
    $("#cAlertContentBox").html(content); 
    $("#cAlertBox").show(); 
    $("#turnOffLight").fadeIn("fast"); 

    var div = document.getElementById('cAlertBox').offsetWidth; 
    var res = -Math.abs(div/2); 
    document.getElementById('cAlertBox').style.marginTop = res + "px"; 
}; 
this.ok = function (success) 
{ 
    $("#cAlertBox").hide(); 
    $("#turnOffLight").fadeOut("medium"); 
    bOn = false; 

    success(); 
}; 
} 

und:

<head> 
    <script src="Scripts/jQuery_1.11.2.js" type="text/javascript"></script> 
    <script src="Scripts/cAlertScript.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
     var cAlert = new cAlert(); 
     cAlert.show("text", function() { javascript:history.go(-1); }); 
    </script> 
</head> 
+0

Ich benutze dies: echo ""; Die Warnung wird angezeigt, aber wenn ich auf OK klicke, passiert nichts. –

+0

lol ich habe vergessen, te bearbeiten die Hälfte des Codes, und später herausgefunden, dass es nicht an erster Stelle funktioniert. Es sollte jetzt funktionieren, ich habe es getestet ... Also schau dir den bearbeiteten Post an und hoffe, dass ich nichts verpasst habe. – DutChen18