请问大神,百度执行click后如何用js判断页面已加载完毕。急啊。

sulinly 2017-11-18 03:52:39
1、打开百度网页
2、document.getElementById("kw").value="搜索内容";document.getElementById("su").click();
我在页面“完全”加载完毕后还需要做其他操作,如何用js判断页面已经加载完毕了呢?原来想用setTimeout解决,但发现网络情况不好时用起来就延时太长了,我用的火狐浏览器。
js不是很熟,网上搜了很久都不知道该如何判断,请高手指点迷津!

百度只是举的例子,实际运用是搜索淘宝商品类的,延时更长。
...全文
484 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
天际的海浪 2017-11-20
  • 打赏
  • 举报
回复
引用 10 楼 sulinly 的回复:
这是网上 [quote=引用 9 楼 jslang 的回复:] 一般情况window.onload事件就是页面完全加载完毕时才触发的、如果你在window.onload事件中没有获取到需要的内容。说明你需要的内容是用ajax异步加载的,你就要找到这个ajax加载的代码。在ajax的回调函数中加入你要执行的代码。 或者可以使用ajaxSuccess

var ajaxNum = 0;
$(document).ajaxSuccess(function() {
	if (++ajaxNum == 1) {//这里的1是页面初始时加载ajax的个数。如初始时需要加载3个ajax,这里就写3
		//你的代码
	}
});
非常感谢,这个方法也用了,加载的时候的确有反应,但测试后还是没有加载完。虽然没解决问题,但对js的了解更深了一步。还有其他解决方案吗?谢谢了。[/quote] 还有一种很笨的方法、用setInterval()每隔一定的时间判断下页面上是否有你需要的内容,没有就一直判断,有了就取消定时器,执行你的操作。
sulinly 2017-11-20
  • 打赏
  • 举报
回复
引用 11 楼 jslang 的回复:
[quote=引用 10 楼 sulinly 的回复:] 这是网上 [quote=引用 9 楼 jslang 的回复:] 一般情况window.onload事件就是页面完全加载完毕时才触发的、如果你在window.onload事件中没有获取到需要的内容。说明你需要的内容是用ajax异步加载的,你就要找到这个ajax加载的代码。在ajax的回调函数中加入你要执行的代码。 或者可以使用ajaxSuccess

var ajaxNum = 0;
$(document).ajaxSuccess(function() {
	if (++ajaxNum == 1) {//这里的1是页面初始时加载ajax的个数。如初始时需要加载3个ajax,这里就写3
		//你的代码
	}
});
非常感谢,这个方法也用了,加载的时候的确有反应,但测试后还是没有加载完。虽然没解决问题,但对js的了解更深了一步。还有其他解决方案吗?谢谢了。[/quote] 还有一种很笨的方法、用setInterval()每隔一定的时间判断下页面上是否有你需要的内容,没有就一直判断,有了就取消定时器,执行你的操作。 [/quote] 非常感谢。但我总觉得js不会那么弱智吧,我不断地度娘,不断地学习。但愿有更好的办法解决。这个问题解决了js也算入门了吧。求各种更多的解决方案。拜托拜托!
天际的海浪 2017-11-19
  • 打赏
  • 举报
回复
引用 5 楼 sulinly 的回复:
打开百度网页后,在火狐开发者模式下,输入如下代码:

window.onload=function(){
alert("加载完毕!");
}
document.getElementById("kw").value="搜索内容";
document.getElementById("su").click();
我的代码实现思路是,添加onload事件。然后执行搜索。当搜索页面完全打开后,提示"加载完毕!"。但是onload没被触发,这是怎么回事呢?

window.onload=function(){
alert("加载完毕!");
document.getElementById("kw").value="搜索内容";
document.getElementById("su").click();
}
sulinly 2017-11-19
  • 打赏
  • 举报
回复
这是网上
引用 9 楼 jslang 的回复:
一般情况window.onload事件就是页面完全加载完毕时才触发的、如果你在window.onload事件中没有获取到需要的内容。说明你需要的内容是用ajax异步加载的,你就要找到这个ajax加载的代码。在ajax的回调函数中加入你要执行的代码。 或者可以使用ajaxSuccess

var ajaxNum = 0;
$(document).ajaxSuccess(function() {
	if (++ajaxNum == 1) {//这里的1是页面初始时加载ajax的个数。如初始时需要加载3个ajax,这里就写3
		//你的代码
	}
});
非常感谢,这个方法也用了,加载的时候的确有反应,但测试后还是没有加载完。虽然没解决问题,但对js的了解更深了一步。还有其他解决方案吗?谢谢了。
天际的海浪 2017-11-19
  • 打赏
  • 举报
回复
一般情况window.onload事件就是页面完全加载完毕时才触发的、如果你在window.onload事件中没有获取到需要的内容。说明你需要的内容是用ajax异步加载的,你就要找到这个ajax加载的代码。在ajax的回调函数中加入你要执行的代码。 或者可以使用ajaxSuccess

var ajaxNum = 0;
$(document).ajaxSuccess(function() {
	if (++ajaxNum == 1) {//这里的1是页面初始时加载ajax的个数。如初始时需要加载3个ajax,这里就写3
		//你的代码
	}
});
sulinly 2017-11-19
  • 打赏
  • 举报
回复
这是网上找的一段代码,也不能实现。。。。谁能救救我。
var script = document.createElement("script");
script.type = "text/javascript";
script.text = 'function a(){document.getElementById("kw").value="搜索内容";document.getElementById("su").click();}a()';
document.body.appendChild(script);
script.onload=function(){alert('搜索内容已经完全加载');}
sulinly 2017-11-19
  • 打赏
  • 举报
回复
引用 6 楼 jslang 的回复:
[quote=引用 5 楼 sulinly 的回复:] 打开百度网页后,在火狐开发者模式下,输入如下代码:

window.onload=function(){
alert("加载完毕!");
}
document.getElementById("kw").value="搜索内容";
document.getElementById("su").click();
我的代码实现思路是,添加onload事件。然后执行搜索。当搜索页面完全打开后,提示"加载完毕!"。但是onload没被触发,这是怎么回事呢?

window.onload=function(){
alert("加载完毕!");
document.getElementById("kw").value="搜索内容";
document.getElementById("su").click();
}
[/quote] 我是想实现监控百度的搜索结果完全加载后再弹出提示:加载完毕!是真正的加载完毕,因为加载完毕后我还要读取搜索内容,没加载完毕是读取不了的。 比如:

document.getElementById("kw").value="搜索内容";
document.getElementById("su").click();
alert(document.getElementsByTagName('html')[0].innerHTML);
如果没有加载完,是不能得到正确的innerHTML的。我原来用了个setTimeout延时来解决,但由于网络原因,这个解决方案不好。而且速度太慢,我是想判断搜索内容完全加载后立即读取内容。麻烦指点迷津,谢谢!
sulinly 2017-11-18
  • 打赏
  • 举报
回复
引用 1 楼 zzgzzg00 的回复:
window.addEventListener('load',function(){xx},false)
是这样用吗?咋没效果呢?谢谢 window.addEventListener('load',function(){alert("ok");},false); document.getElementById("kw").value="搜索内容"; document.getElementById("su").click();
sulinly 2017-11-18
  • 打赏
  • 举报
回复
打开百度网页后,在火狐开发者模式下,输入如下代码:

window.onload=function(){
alert("加载完毕!");
}
document.getElementById("kw").value="搜索内容";
document.getElementById("su").click();
我的代码实现思路是,添加onload事件。然后执行搜索。当搜索页面完全打开后,提示"加载完毕!"。但是onload没被触发,这是怎么回事呢?
sulinly 2017-11-18
  • 打赏
  • 举报
回复
引用 3 楼 jslang 的回复:
[quote=引用 2 楼 sulinly 的回复:] [quote=引用 1 楼 zzgzzg00 的回复:] window.addEventListener('load',function(){xx},false)
是这样用吗?咋没效果呢?谢谢 window.addEventListener('load',function(){alert("ok");},false); document.getElementById("kw").value="搜索内容"; document.getElementById("su").click();[/quote]

window.onload=function(){
	document.getElementById("kw").value="搜索内容";
	document.getElementById("su").click();
}
[/quote]
window.onload=function(){
    document.getElementById("kw").value="搜索内容";
    document.getElementById("su").click();
}
alert("加载完毕!");
语句是这样写的吗?运行了,还是没反应呢,我的开发涉及的js很少,js不太熟,只是用了少量js代码。麻烦指教!
似梦飞花 2017-11-18
  • 打赏
  • 举报
回复
window.addEventListener('load',function(){xx},false)
天际的海浪 2017-11-18
  • 打赏
  • 举报
回复
引用 2 楼 sulinly 的回复:
[quote=引用 1 楼 zzgzzg00 的回复:] window.addEventListener('load',function(){xx},false)
是这样用吗?咋没效果呢?谢谢 window.addEventListener('load',function(){alert("ok");},false); document.getElementById("kw").value="搜索内容"; document.getElementById("su").click();[/quote]

window.onload=function(){
	document.getElementById("kw").value="搜索内容";
	document.getElementById("su").click();
}

87,904

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧