Microsoft KB Archive/318382

= The document.open Method with Replace Does Not Work in Frameset =

Article ID: 318382

Article Last Modified on 9/27/2005

-

APPLIES TO


 * Microsoft Internet Explorer (Programming)

-



This article was previously published under Q318382



SYMPTOMS
When you call the document.open method with the replace parameter from a frameset, the document is not removed from the history. Therefore, if you go back in the navigation stack, you are returned to the previous document.



RESOLUTION
To resolve this problem, obtain the latest service pack for Internet Explorer 6. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:

328548 How to Obtain the Latest Internet Explorer 6 Service Pack

The English version of this fix should have the following file attributes or later:

  Date         Time      Version        Size       File name 27-FEB-2002 12:42:50  6.0.2714.2700  2,754,048  Mshtml.dll

The update for this problem is included in the &quot;March 28, 2002 Cumulative Patch for Internet Explorer.&quot;



WORKAROUND
To work around this problem, use one of the following methods:
 * Use the innerHTML property to replace sections of the document instead of replacing all of the document.
 * Set the document.location.href property.

NOTE: If you call document.location.replace, you must set up a page for each page that you want to browse to.



STATUS
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Internet Explorer 6 Service Pack 1.



Steps to Reproduce the Behavior
  In Notepad, create a new Hypertext Markup Language (HTML) file named Frameset.htm, and then add the following code to the file:      In Notepad, create a new HTML file named Frame1.htm, and then add the following code to this file:   <script language=&quot;javascript&quot;> function Replace { top.frame2.document.open(&quot;text/html&quot;,&quot;replace&quot;); top.frame2.document.writeln(&quot;...is gone (document.open)&quot;); top.frame2.document.close; }

function Workaround1 { top.frame2.document.location.replace(&quot;frame2a.htm&quot;); }

function Workaround2 { top.frame2.document.body.innerHTML=&quot;...is gone&quot;; } Repro

<button onclick= &quot;Replace&quot;>document.open(.., &quot;replace&quot;) Workarounds <button onclick= &quot;Workaround1&quot;>document.location.replace workaround <button onclick= &quot;Workaround2&quot;>innerHTML workaround </BODY> </HTML> </li>  In Notepad, create a new HTML file named Frame2.htm, and then add the following code to this file: <HTML> <BODY> Top Secret Information... </BODY> </HTML> </li>  In Notepad, create a new HTML file named Frame2a.htm, and then add the following code to this file: <HTML>

<BODY> ...is gone. </BODY> </HTML> </li> Browse to the Frameset.htm file in a new instance of Internet Explorer 6.0.</li> Click the first button to call document.open(.., &quot;replace&quot;). Notice that the back arrow is enabled, which indicates that the new page did not replace the first history entry. Click Back to see the previous information.</li> Click the other two buttons to demonstrate the workarounds.</li></ol>

Additional query words: bReplace

Keywords: kbhotfixserver kbqfe kbbug kbdhtml kbfix kbie600presp1fix kbnavigation kbie600sp1fix KB318382

-

[mailto:TECHNET@MICROSOFT.COM Send feedback to Microsoft]

© Microsoft Corporation. All rights reserved.