Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-7106264

IE9 Object.innerHTML=Applet crashes when Mode: IE9 Compat View & IE9 standards

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Cannot Reproduce
    • Icon: P2 P2
    • 7u4
    • 7
    • deploy
    • 7u1
    • x86
    • windows_7

      FULL PRODUCT VERSION :
      JRE Build: Java Plug-in 10.1.0.8
                           Using JRE version 1.7.0_01-b08 Java HotSpot(TM) Client VM

      IE9 Build: http://international.download.nvidia.com/GPUA/doc/HelloWorldApplet/IE9_Version.jpg

      ADDITIONAL OS VERSION INFORMATION :
      Windows Build: Microsoft Windows [Version 6.1.7600]

      EXTRA RELEVANT SYSTEM CONFIGURATION :
      Mode: IE9 Compat View & IE9 standards

      A DESCRIPTION OF THE PROBLEM :
      If a Document Object.innerHTML is set to the value of an Applet that is currently loaded to the same
      Object ID then IE9 running in Browser Mode: IE9 Compat View & Document Mode: IE9 standards will crash.

      See demo available here: http://international.download.nvidia.com/GPUA/doc/HelloWorldApplet/bin/HelloWorldID.html

      STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
      See demo available here: http://international.download.nvidia.com/GPUA/doc/HelloWorldApplet/bin/HelloWorldID.html

      EXPECTED VERSUS ACTUAL BEHAVIOR :
      EXPECTED -
      Applet reloaded and init() method instantiated.
      ACTUAL -
      IE9 Crashes

      ERROR MESSAGES/STACK TRACES THAT OCCUR :
      swf demo here: http://international.download.nvidia.com/GPUA/doc/HelloWorldApplet/HelloWorldInnerHtmlIE9Crash.10282011.swf

      JRE Stack trace & Logs:
      http://international.download.nvidia.com/GPUA/doc/HelloWorldApplet/plugin2602528487041803565.trace.HelloWorldID.IE9.Crash.10282011
      http://international.download.nvidia.com/GPUA/doc/HelloWorldApplet/plugin6472296814278387798.log.HelloWorldID.IE9.Crash.10282011.xml



      REPRODUCIBILITY :
      This bug can be reproduced always.

      ---------- BEGIN SOURCE ----------
      See demo available here: http://international.download.nvidia.com/GPUA/doc/HelloWorldApplet/bin/HelloWorldID.html

      HelloWorld applet, derived from Oracle tutorials.
      Available here: http://international.download.nvidia.com/GPUA/doc/HelloWorldApplet/bin/HelloWorld.java

      import javax.swing.JApplet;
      import javax.swing.SwingUtilities;
      import javax.swing.JLabel;
      import java.util.Calendar;
      import java.util.Date;
      import java.util.Locale;
      import java.util.TimeZone;
      import java.util.GregorianCalendar;
      import java.text.SimpleDateFormat;

      /*
       cd C:/home/rvancleave/eclipse_java/DeviceReconcile
       cp -r bin/
       cp -r bin/ c:/Inetpub/wwwroot/temp/HelloWorldApplet
       http://rvcnvidia/temp/HelloWorldApplet/bin/HelloWorld.html
       */

      public class HelloWorld extends JApplet {
          //Called when this applet is loaded into the browser.
          public void init() {
              //Execute a job on the event-dispatching thread; creating this applet's GUI.
              try {
                  SwingUtilities.invokeAndWait(new Runnable() {
      SimpleDateFormat dateFormat = new SimpleDateFormat("MMM dd yyyy HH:mm:ss",Locale.ENGLISH);
                      public void run() {
                      
           Calendar theCalendar = new GregorianCalendar(TimeZone.getTimeZone("GMT"));
           Date creationDate = theCalendar.getTime();
                          JLabel lbl = new JLabel("Hello World:"+this.dateFormat.format(creationDate));
                          add(lbl);
                      }
                  });
              } catch (Exception e) {
                  System.err.println("createGUI didn't complete successfully");
              }
          }
      }

      html to reload Applet via Object.innerHTML

      <!DOCTYPE html><head><meta http-equiv="X-UA-Compatible" content="IE=9" >
      <TITLE> Hello World Applet </TITLE>
      </HEAD>

      <SCRIPT>
      function reloadHelloWordID()
      {
      var HelloWorldIDObj = document.getElementById('HelloWorldID');
      var appletTag = HelloWorldIDObj.innerHTML;
      HelloWorldIDObj.innerHTML = appletTag; // Force Applet to be reloaded, init() called
      }

      </SCRIPT>

      <BODY>
      Hello World Applet Output.
      <div id="HelloWorldID"><APPLET CODE="HelloWorld.class" WIDTH=300 HEIGHT=25></APPLET></div>
      <br>
      <div><input type=button value= "ReLoad HelloWorld Applet" id="cmdReloadHelloWordID" onclick="javascript:reloadHelloWordID()"></div>

      </BODY>
      </HTML>

      ---------- END SOURCE ----------

      CUSTOMER SUBMITTED WORKAROUND :
      NONE, Critical fix required

      SUPPORT :
      YES

            ccheung Calvin Cheung
            webbuggrp Webbug Group
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

              Created:
              Updated:
              Resolved:
              Imported:
              Indexed: