我正在使用以下代码在页面加载后执行一些语句。
<script type="text/javascript">
window.onload = function () {
newInvite();
document.ag.src="b.jpg";
}
</script>
但是这段代码不起作用。即使有些图像或元素正在加载,该函数仍然被调用。我想要的是在页面完全加载后调用该函数。
我正在使用以下代码在页面加载后执行一些语句。
<script type="text/javascript">
window.onload = function () {
newInvite();
document.ag.src="b.jpg";
}
</script>
但是这段代码不起作用。即使有些图像或元素正在加载,该函数仍然被调用。我想要的是在页面完全加载后调用该函数。
我倾向于使用以下模式来检查文档是否完成加载。该函数返回一个 Promise(如果需要支持 IE,请包含polyfill),一旦文档完成加载就会解决。它在底层使用setInterval
,因为类似的setTimeout
实现可能会导致非常深的堆栈。
function getDocReadyPromise()
{
function promiseDocReady(resolve)
{
function checkDocReady()
{
if (document.readyState === "complete")
{
clearInterval(intervalDocReady);
resolve();
}
}
var intervalDocReady = setInterval(checkDocReady, 10);
}
return new Promise(promiseDocReady);
}
当然,如果您不必支持IE:
const getDocReadyPromise = () =>
{
const promiseDocReady = (resolve) =>
{
const checkDocReady = () =>
((document.readyState === "complete") && (clearInterval(intervalDocReady) || resolve()));
let intervalDocReady = setInterval(checkDocReady, 10);
}
return new Promise(promiseDocReady);
}
通过该函数,您可以执行以下操作:
getDocReadyPromise().then(whatIveBeenWaitingToDo);
我可以告诉你,我找到的最好的答案是在</body>
命令之后放置一个“驱动程序”脚本。这是最简单的方法,可能比上面的一些解决方案更通用。
计划:我的页面上有一个表格。我将带有表格的页面写出并输出到浏览器,然后使用JS对其进行排序。用户可以通过单击列标题重新排序。
在表格结束后使用</tbody>
命令,并结束正文后,我使用以下行来调用排序JS以按第3列对表格进行排序。我从网上获取了排序脚本,因此此处不再重复。至少在未来的一年中,您可以在static29.ILikeTheInternet.com
上看到它的运作,包括JS。单击页面底部的“此处”。这将带出另一个带有表格和脚本的页面。您可以看到它快速地展示数据然后进行排序。我需要稍微加快一下速度,但现在基础已经建立。
</tbody></body><script type='text/javascript'>sortNum(3);</script></html>
制造者麦克
$(window).bind("load", function() {
// code here
});
call a function after complete page load set time out
setTimeout(function() {
var val = $('.GridStyle tr:nth-child(2) td:nth-child(4)').text();
for(var i, j = 0; i = ddl2.options[j]; j++) {
if(i.text == val) {
ddl2.selectedIndex = i.index;
break;
}
}
}, 1000);
ready
不会执行OP请求的操作。当DOM加载时,ready
会触发,而不是在元素加载后触发。load
将在元素完成加载/渲染后触发。 - Jaime Torres
$(window).load()
。 - Matt Hintzkewidth
是否大于0来进行测试。 - Jeffrey Sweeney