在另一个脚本之后有一个脚本开火?

L84*_*L84 6 javascript jquery

我正在使用两个同时触发的脚本.他们似乎引起了冲突.我的问题是如何在另一场火灾之后让一个人开火半秒到一秒钟?我认为这可能会解决我遇到的问题.

我正在使用jQuery,但我不确定如何去做.

谢谢

注意我没有在这里发布脚本,他们是不敬的.我只需要知道如何延迟一个射击直到另一个射击.我最后要点击的是位于HTML底部的另一个位于头部.这两个脚本在他们的工作中彼此完全无关.

编辑这个问题源于我发布的另一个问题.这里 - Javascript/Fancybox错误? - 我考虑过它,并想尝试添加一个延迟,但我也很好奇如何添加延迟无论如何与我遇到的问题无关.

jfr*_*d00 6

两个脚本无法同时触发.Javascript是单线程的,并且没有两个脚本同时运行.一个将运行完成,然后下一个将运行.如果两者之间存在冲突,那么它与脚本的编写方式有关,我们只能通过查看脚本和导致它们运行的​​上下文来帮助您解决问题.

此外,在加载脚本时尝试在head标记中运行的任何内容都可能无法操作浏览器DOM,因为它尚未到位.它必须被延迟,直到DOM成功加载并准备好进行操作.

很容易有一个javascript函数调用另一个javascript函数:

function doStuff1() {
    // do doStuff1 stuff
    doStuff2();
}

function doStuff2() {
    // do doStuff2 stuff
}

doStuff1();   // call doStuff1 which will also call doStuff2
Run Code Online (Sandbox Code Playgroud)

您现在已经添加了一部分问题.你问如何实现延迟.您可以使用计时器在将来的某个时间运行某些代码:

setTimeout(doStuff2, 5000);    // run doStuff2() in 5 seconds
Run Code Online (Sandbox Code Playgroud)


Sam*_*iew 5

如果您想首先运行fancybox,请使用fancybox onComplete回调:

$j(document).ready(function(){
    $j('#start').fancybox({

        'onComplete': function () {
            Engine.Initialize();
        }

    });
});
Run Code Online (Sandbox Code Playgroud)

否则,在调用自定义初始化函数后放入fancybox代码:

$j(document).ready(function(){
    Engine.Initialize();

    $j("#start").fancybox({
        'padding' : 0
    });
});
Run Code Online (Sandbox Code Playgroud)