Knowledge Base

BUG: Document.Frames Collection Does Not Support For Each Syntax

Article ID: 191184

Article Last Modified on 5/12/2003


APPLIES TO


This article was previously published under Q191184

SYMPTOMS

When you try to enumerate through the Frames collection from Document object using VBScript's "For Each" syntax, you get the following error message:
Error: Object doesn't support this property or method

CAUSE

The Document.Frames collection does not support the functionality required for the "For Each" syntax.

RESOLUTION

Use a regular FOR loop to enumerate through the Document.Frames collection. For example, if you had the following code:
<SCRIPT LANGUAGE=VBSCRIPT>
Sub Window_OnLoad()
Dim f
For Each f In Document.Frames
MsgBox f.location.href
Next
End Sub
</SCRIPT>
				
You can change this code to use the regular for loop syntax as follows:
<SCRIPT LANGUAGE=VBSCRIPT>
Sub Window_OnLoad()
Dim i
For i = 0 to document.frames.length - 1
MsgBox frames(i).location.href
Next
End Sub
</SCRIPT>
				

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

Steps to Reproduce Behavior

  1. Save the following HTML as Frames.htm in a folder:
    <HTML>
    <HEAD>
    <SCRIPT LANGUAGE=VBSCRIPT>
    Sub Window_OnLoad()
    Dim f
    For Each f In Document.Frames
    MsgBox f.location.href
    Next
    End Sub
    </SCRIPT>
    </HEAD>
    
    <FRAMESET rows="50%,*">
    <FRAME SRC="frame1.htm"></FRAME>
    <FRAME SRC="frame2.htm"></FRAME>
    </FRAMESET>
    </HTML>
    					
  2. Save the following HTML as Frame1.htm:
    <HTML>
      <HEAD>
      </HEAD>
      <BODY>
         FRAME 1
      </BODY>
    </HTML>
    					
  3. Save the following HTML as Frame2.htm:
    <HTML>
      <HEAD>
      </HEAD>
      <BODY>
         FRAME 2
      </BODY>
    </HTML>
    					
  4. Navigate to Frames.htm.
You will see the above mentioned error message.

Keywords: kbbug kbscript kbieobj kbhtml kbpending KB191184