Javascript 一个脚本在另一个脚本之后被激活?
我正在使用两个同时启动的脚本。他们似乎引起了冲突。我的问题是,我怎样才能让其中一个在其他火灾发生后的半秒到一秒之间开火?我想这可能会解决我面临的问题 我正在使用jQuery,但我不确定如何进行 谢谢 注意,我没有在这里发布脚本,因为它们是不相关的。我只需要知道如何延迟一个发射直到另一个发射。另外,我想最后触发的一个在HTML的底部,另一个在头部。另外,这两个脚本在它们所做的事情上完全不相关Javascript 一个脚本在另一个脚本之后被激活?,javascript,jquery,Javascript,Jquery,我正在使用两个同时启动的脚本。他们似乎引起了冲突。我的问题是,我怎样才能让其中一个在其他火灾发生后的半秒到一秒之间开火?我想这可能会解决我面临的问题 我正在使用jQuery,但我不确定如何进行 谢谢 注意,我没有在这里发布脚本,因为它们是不相关的。我只需要知道如何延迟一个发射直到另一个发射。另外,我想最后触发的一个在HTML的底部,另一个在头部。另外,这两个脚本在它们所做的事情上完全不相关 编辑这个问题源于我发布的另一个问题。这里--我想了一下,想尝试添加一个延迟,但我也很好奇如何添加与我遇到的
编辑这个问题源于我发布的另一个问题。这里--我想了一下,想尝试添加一个延迟,但我也很好奇如何添加与我遇到的问题无关的延迟。两个脚本不能同时启动。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
$j(document).ready(function(){
Engine.Initialize();
$j("#start").fancybox({
'padding' : 0
});
});
现在,您的问题又增加了一部分。您询问如何实施延迟。您可以使用计时器在将来某个时间运行某些代码:
setTimeout(doStuff2, 5000); // run doStuff2() in 5 seconds
我不确定完全不相关的脚本会如何相互影响,可能是这些不相关的脚本正在影响它们使用的全局属性,因此变得疯狂。JS中有一个概念,允许您并行运行两个JS脚本,这就是所谓的WebWorkers。jquery专家约翰·雷斯格(John Resig)很久以前就发表过一篇文章,我是在谷歌上找到的。使用web worker,您可以在一秒钟或任何时间后启动第二个脚本。我不是JS忍者,但我认为这可能会帮助你。但尽管如此,当你发布代码时,其他人很难向你推荐一些东西。在查看您的编辑之后,我可以建议您在JS中探索
settimeout
。同一篇文章中的另一个链接是正确的,但是下面的内容正是你想要的:
// Ensure that all scripts have been loaded.
$(document).ready(function(){
// Call first script.
doFistThing();
// Set a 1 second delay that starts AFTER the first script has completed.
setTimeout(function(){
doSecondThing();
}, 1000);
});
如果要先运行fancybox,请使用fancybox onComplete回调:
$j(document).ready(function(){
$j('#start').fancybox({
'onComplete': function () {
Engine.Initialize();
}
});
});
否则,请在调用自定义初始化函数后输入fancybox代码:
function doStuff1() {
// do doStuff1 stuff
doStuff2();
}
function doStuff2() {
// do doStuff2 stuff
}
doStuff1(); // call doStuff1 which will also call doStuff2
$j(document).ready(function(){
Engine.Initialize();
$j("#start").fancybox({
'padding' : 0
});
});
如果他们在工作中完全不相关,那么他们之间又有什么冲突呢?看看所有的讨论,我建议你去探索网络工作者。网络工作者?你是什么意思?下次,如果你只是说你有两个fancyBox,并且你想确保其中一个在另一个完成后运行,你会为每个人节省很多时间。您最初的帖子中完全没有关于该库的内容,这是解决您的问题所必需的信息。我在这里完成了。实际上只有一个脚本是Fancybox,另一个不是。我最初是问如何延迟脚本的启动,并认为这可能会解决我在另一篇帖子中提到的一个问题。如果我用词不当,我向你道歉。我也感谢您提供的任何帮助。我在问题中添加了更多信息来解释。@jfriend00可能是网络工作者可以让他并行运行两个JS脚本,但仍然不确定他的实际问题是什么,@Kumar-这在技术上是可能的,但这里没有提及这一点,这里的讨论水平也不可能让我们讨论这个问题。需要解决的“冲突”仍然是个谜。@UBhapE2-我在我的答案中添加了更多内容,尽管我们都不确定你真正想解决的问题。我试图在这篇文章中解释我的问题-这个问题源于那篇文章,但我很好奇如何延迟JS,这里的一些帖子现在已经解释了。=>外部JS文件中的脚本之一。我可以把外部JS文件(指向它的链接ie src=“external.JS”)放进去吗?或者我必须把整个脚本放在“dofirsthing”中吗?src=“external.JS”应该放在HTML文档的部分。通过使用JQuery的$(document).ready()函数调用,您可以确定外部脚本和内联脚本都已加载。doFirstThing()和/或doSecondThing()可以是内联标记或外部文档中定义的函数,这无关紧要,因为文档将准备就绪。