Sign in to follow this  
Followers 0
Kamakazy

How to access iFrames based on ID

1 post in this topic

#1 ·  Posted (edited)

The following code is an adaptation of the IE.au3 UDF.

By including this, you will be able to access Iframes and their content based on their ID's instead of their Names.

As always, Critisism is welcome!

Regards.

Orrin Gradwell

#include-once

#include "WinAPIError.au3"

; #FUNCTION# ====================================================================================================================
; Name...........: _IEFrameGetObjById
; Description ...: Returns an object reference to a Frame by ID
; Parameters ....: $o_object - Object variable of an InternetExplorer.Application, Window or Frame object
; $s_id - ID of the Frame you wish to match
; Return values .: On Success - Returns an object variable pointing to the Window object in a Frame, @EXTENDED = Frame count
;                On Failure - Returns 0 and sets @ERROR
; @ERROR - 0 ($_IEStatus_Success) = No Error
; - 3 ($_IEStatus_InvalidDataType) = Invalid Data Type
; - 4 ($_IEStatus_InvalidObjectType) = Invalid Object Type
; - 7 ($_IEStatus_NoMatch) = No Match
; @Extended - Contains invalid parameter number
; Origional Author ........: Dale Hohm
; Adapted By ..............: Orrin Gradwell
; ===============================================================================================================================
Func _IEFrameGetObjById(ByRef $o_object, $s_id)
If Not IsObj($o_object) Then
__IEErrorNotify("Error", "_IEFrameGetObjById", "$_IEStatus_InvalidDataType")
Return SetError($_IEStatus_InvalidDataType, 1, 0)
EndIf
;
Local $oTemp, $oFrames

If Not __IEIsObjType($o_object, "browserdom") Then
__IEErrorNotify("Error", "_IEFrameGetObjById", "$_IEStatus_InvalidObjectType")
Return SetError($_IEStatus_InvalidObjectType, 1, 0)
EndIf

If __IEIsObjType($o_object, "document") Then
$oTemp = $o_object.parentWindow
Else
$oTemp = $o_object.document.parentWindow
EndIf

If _IEIsFrameSet($oTemp) Then
$oFrames = _IETagNameGetCollection($oTemp, "frame")
Else
$oFrames = _IETagNameGetCollection($oTemp, "iframe")
EndIf

If $oFrames.length Then
For $oFrame In $oFrames
If $oFrame.id = $s_id Then Return SetError($_IEStatus_Success, 0, $oTemp.frames($s_id))
Next
__IEErrorNotify("Warning", "_IEFrameGetObjById", "$_IEStatus_NoMatch", "No frames matching Id")
Return SetError($_IEStatus_NoMatch, 2, 0)
Else
__IEErrorNotify("Warning", "_IEFrameGetObjById", "$_IEStatus_NoMatch", "No Frames found")
Return SetError($_IEStatus_NoMatch, 2, 0)
EndIf
EndFunc ;==>_IEFrameGetObjById
Edited by Kamakazy
3 people like this

Share this post


Link to post
Share on other sites



Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0