Jump to content
Sign in to follow this  
Kamakazy

How to access iFrames based on ID

Recommended Posts

Kamakazy

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
  • Like 3

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  

×

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.