场景我有一个Javascript生成的网页很久以前别人写过我想要使用jQuery。我的目标是在生成之后,通过对该HTML使用一些jQuery调用来清理其他人生成的Javascript生成的html。
这比直接修改其他人的Javascript简单 更简单,至少目前是这样。
我的第一次尝试是在HTML头的末尾添加一个脚本标记来调用所需的jQuery代码。
<script src="/someone-elses-js-generator.js" />
<script>
$(document).ready(function() {
alert('the other stuff ran, now do the jquery cleanup');
$('.foobar').css("display","none");
$('.doobar').css("display","inline");
/// ... so on and so forth ...
});
</script>
问题:以上工作正常,但当我注释掉“提醒”消息时。 jquery不再执行清理。显然,正在发生的事情是警报消息框延迟了后续清理代码的运行,这很好,但没有警报,jQuery似乎在其他javascript完成输出之前运行。
问题:有没有办法让jQuery清理代码在 js-generator代码之后运行,但无需放置alert()框在那里?
答案 0 :(得分:5)
或许$(document).ready()
不是正确的方法。
其他脚本是如何触发的?如果它在window.onload
上,那么它可能只在你的jQuery启动后才开始。
您要等到其他脚本停止运行。可能最好的方法是将jQuery包装在一个函数中,并在确定它已完成时从另一个脚本中调用它。
答案 1 :(得分:1)
你可以把
$(document).ready(function() { ... });
在/someone-elses-js-generator.js
的末尾或此文件中操作逻辑的末尾。
答案 2 :(得分:1)
您可以使用以下JavaScript函数延长清理代码:
setTimeout('JS Cleanup Code', number_of_miliseconds);
答案 3 :(得分:1)
我认为您可能需要查看其他编码器代码被延迟的原因。如果它没有立即运行,并且没有理由不能将其功能包装在匿名函数中并立即运行。
(function() {
/*
Other coder's code here
*/
})(); //run this function and the code inside it immediately.
答案 4 :(得分:0)
您也可以稍后使用setTimeout();
尝试调用清理代码