zhybxyz 发表于 2013-9-10 15:35:41

关于IE网页加载的问题

<div id="here">内容</div>

网页很大,加载很慢,比如淘宝,网易,腾讯。

只想要其中的一部分内容,能不能判断当网页对象ID为here,已经加载进来完毕后就停止加载,因为想要得到到已经加载进来了,执行$oIE.Stop(),省去后面那些无用的内容载入。

在论坛里找到函数,修改完貌似没什么效果,还是要加载完。

#include <IE.au3>

$oIE = _IECreateEmbedded()
$Form = GUICreate("测试", 600, 600)
GUICtrlCreateObj($oIE, 0, 0, 600, 600)
GUISetState()
_IENavigate($oIE, "http://www.taobao.com/", 0)
$oEle = _IEWaitEle($oIE, "q")
$oEle.value = "你好"

Do
Until GUIGetMsg() = -3

Func _IEWaitEle(ByRef $o_object, $o_id, $complete = false, $timeout = 300000) ;_IEWaitEle(IE对象,元素id或name,是否等待加载完成,超时值)
      If Not IsObj($o_object) Then
                __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidDataType")
                Return SetError($_IEStatus_InvalidDataType, 1, 0)
      EndIf
      If Not __IEIsObjType($o_object, "browserdom") Then
                __IEErrorNotify("Error", "_IEPropertyGet", "$_IEStatus_InvalidObjectType")
                Return SetError($_IEStatus_InvalidObjectType, 1, 0)
      EndIf
      Local $o_Init = TimerInit()
      While TimerDiff($o_Init) < $timeout
                $o_doc = _IEDocGetObj($o_object)
                If IsObj($o_doc) Then
                        $o_Ele = _IEGetObjById($o_object, $o_id)
                        If Not IsObj($o_Ele) Then $o_Ele = _IEGetObjByName($o_object, $o_id)
                        
                        If IsObj($o_Ele) And ((Not $complete) Or ($o_Ele.readyState == 'loaded' Or $o_Ele.readyState == 'complete')) Then
                                                                $o_object.Stop()
                              Return $o_Ele
                                                        EndIf
                EndIf
                Sleep(100)
      WEnd
      Return SetError(0, 0, 0)
EndFunc

zhybxyz 发表于 2013-9-10 18:30:48

表面死气沉沉,但实际上暗流涌动啊?!这么多人在线看帖,100、200次浏览,咋就没有回复的呢?

heavenm 发表于 2013-9-16 17:45:05

这个问题非常有建设性
我喜欢!

_IEAction($o_object, "stop")
这个不行吗?

zhybxyz 发表于 2013-9-17 20:48:30

行是行,如何判断自己想要的部分已经加载进来,DOM已经创建?还是进度到50%?还是……?

seniors 发表于 2013-9-18 12:44:10

读取网页源码是比较快的,你可以根据源码自己显示网页内容
页: [1]
查看完整版本: 关于IE网页加载的问题