警报会停止脚本

时间:2013-10-09 12:05:15

标签: javascript alert execution

我正在尝试在我的脚本在后台运行时显示警报,但似乎会发出警报以阻止网站上的所有内容。是否有任何方法可以防止这种情况并在警报显示时使脚本运行?功能:function jobbig() { alert("JOBBIGT"); }
代码我想在警报显示时运行:`

     }
     function changez() {
     if(y == 1) {
         colour = "red";
         y = 2;
         }
         else if(y == 2)
         {
         colour = "green";
         y = 3;
         }
         else if(y == 3)
         {
         colour = "black";
         y = 4;
         }
         else if(y == 4)
         {
         colour = "yellow";
         y = 5;
         }
         else if(y == 5)
         {
         colour = "cyan";
         y = 6;
         }
         else if(y == 6)
         {
         colour = "white";
         y = 1;
         }

document.getElementById("head").style.color = colour;
}`


function change()    {
       if(x == 1) {
         color = "black";
         x = 2;
         }
         else if(x == 2)
         {
         color = "white";
         x = 3;
         }
         else if(x == 3)
         {
         color = "yellow";
         x = 4;
         }
         else if(x == 4)
         {
         color = "red";
         x = 5;
         }
         else if(x == 5)
         {
         color = "green";
         x = 6;
         }
         else if(x == 6)
         {
         color = "cyan";
         x = 7;
         }
         else if(x == 7)
         {
         color = "purple";
         x = 1;
         }
        else if(x == 1337)
        {
        color = "white";
        }
 document.body.style.background = color; }


代码由function andrafarg30() { clearInterval(interval2); clearInterval(interval3); clearInterval(intervall2); clearInterval(intervall3); x = 1; y = 1; interval1 = setInterval(change, 30); intervall1 = setInterval(changez, 45); }运行,由按钮调用。警报也可以通过按钮调用。

2 个答案:

答案 0 :(得分:0)

jQuery UI Dialog组件与modal: true选项一起使用,而不是使用Window.alert函数。

执行以下操作:

  1. 将对jQuery UI的引用放到您站点的标题中 <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>之后 jquery.js inlude。

  2. function jobbig() { alert("JOBBIGT"); }更改为function jobbig() { var tag = $('<div>JOBBIGT</div>'); tag.dialog({modal: true}); }

  3. 如果您需要以某种方式自定义对话框,请参阅demo

答案 1 :(得分:0)

使用非阻塞alert可能是一个坏主意,尤其是在循环中,但是可能。实现它的最简单方法是通过非阻塞的其他方式运行它,例如setTimeout

function makeNonBlocking(func, context) {
    if (!context) context = null;
    return function () {
        var args = arguments;
        setTimeout(function () {func.apply(context, args)}, 0);
    };
}
var myAlert = makeNonBlocking(alert);

myAlert('foo');
console.log('bar'); // appears before user okays `foo` alert
myAlert('baz');

为什么不考虑使用console.log呢?