2015-04-28 13 views
7

Hãy để tôi giải thích: Khi bạn gọi cảnh báo() trong JS, tất cả mã bên dưới cảnh báo sẽ dừng và khi bạn nhấp vào Ok , mã trả về công việc.Dừng tất cả mã và tiếp tục sau đó, như cảnh báo() trong JS

tôi làm cho cảnh báo tùy chỉnh của riêng tôi với mã này:

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; 
}; 
} 

và trong các trang khác:

<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> 

nhưng tôi có một vấn đề, trong trang đăng nhập, sau khi cuộc gọi cAlert(), tôi gọi đây là:

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

để trở về trang cuối cùng, khi tôi sử dụng cảnh báo(), chỉ sau khi người dùng nhấp vào ok, trình duyệt trở về trang cuối cùng, nhưng bằng cách sử dụng cAlert, trình duyệt đã trở về trang cuối cùng.

Điều tôi muốn là người dùng cần nhấp vào nút Ok để mã tiếp tục dưới dạng cảnh báo().

+1

Đây chỉ là không thể trong JS ngoài cho các chức năng có nguồn gốc 'alert() ',' confirm() ', và' prompt() '. Chỉ những người có khả năng ngăn chặn các chủ đề thực hiện. Trừ khi tất nhiên bạn cảm thấy như viết động cơ JavaScript của riêng bạn mà sẽ ngừng thực hiện trên một số chức năng khác cũng ...: P +1 cho câu hỏi tốt bằng văn bản anyways. – Scimonster

Trả lời

0

Vì bạn chỉ muốn trang để quay trở lại một lần vào nút OK được nhấp, đặt lời gọi hàm hoặc mã quay trở lại trong cAlert.ok() chức năng. Bằng cách này, trang sẽ chỉ quay trở lại khi người dùng đã nhấp vào nút OK vì chức năng này chỉ được gọi khi người dùng nhấp vào nút OK.

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

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

này sẽ không phục vụ cho tôi bởi vì tôi muốn sử dụng cảnh báo này trong các trang khác, và không aways, tôi cần phải quay trở lại trang cuối cùng ... –

+0

@ JuniorVenâncio: Sau đó, thông qua một callback cho 'cAlert' ... – Bergi

2

Thay đổi cAlert.show(content) thành cAlert.show(content, success). Thay đổi cAlert.ok() thành cAlert.ok(' + success + '). Thay đổi this.ok = function() thành this.ok = function (success) và cuối cùng thêm success(); vào cuối hàm ok().

này sẽ gọi success khi nút trong cAlert được nhấp.

Thay vì gọi cAlert.show("text") bây giờ bạn cần phải gọi cAlert.show("text", function() { javascript:history.go(-1); }).


Vì vậy, mã của bạn bây giờ sẽ là:

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(); 
}; 
} 

và:

<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

tôi sử dụng này: echo ""; Cảnh báo xuất hiện, nhưng khi tôi nhấp vào Ok, không có gì xảy ra. –

+0

lol tôi quên te chỉnh sửa một nửa của mã, và sau đó đã tìm ra nó đã không làm việc ở nơi đầu tiên. Nó sẽ làm việc bây giờ mặc dù, tôi đã thử nghiệm nó ... Vì vậy, kiểm tra các bài viết đã chỉnh sửa và hy vọng tôi đã không bỏ lỡ bất cứ điều gì. – DutChen18

Các vấn đề liên quan