1

我试图在我的脚本在后台运行时显示警报,但似乎发出警报以停止网站上的所有内容。有什么方法可以防止这种情况并在警报显示时使脚本运行?功能: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); }按钮调用。警报也由按钮调用。

4

2 回答 2

0

使用带有选项的jQuery UI 对话框组件modal: true而不是 Window.alert 函数。

请执行下列操作:

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

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

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

于 2013-10-09T12:10:13.947 回答
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');

不过,您为什么不考虑使用 aconsole.log呢?

于 2013-10-09T12:10:41.463 回答