Jump to content
Sign in to follow this  

How to access iFrames based on ID

Recommended Posts

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!


Orrin Gradwell


#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)
Local $oTemp, $oFrames

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

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

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

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

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  

  • Recently Browsing   0 members

    No registered users viewing this page.

  • Create New...