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



The information in this article applies to:

  • Microsoft Internet Explorer (Programming) 4.0
  • Microsoft Internet Explorer (Programming) 4.01
  • Microsoft Internet Explorer (Programming) 4.01 SP1
  • Microsoft Internet Explorer (Programming) 5
  • Microsoft Internet Explorer (Programming) 5.5

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.

Modification Type:MajorLast Reviewed:5/12/2003
Keywords:kbBug kbhtml kbieObj kbpending kbScript KB191184