Html程序  |  121行  |  4.4 KB

<html>
  <!-- This page is meant to load inside the host browser like IE/FF -->
  <head><title>Initialize hidden chrome frame</title>
    <script type="text/javascript" src="chrome_frame_tester_helpers.js">
    </script>
    <script type="text/javascript">
      var g_failure_timeout = null;
      var g_test_id = 1;
      var g_test_name = 'InitializeHidden';
      var g_cf3_loaded = false;

      function OnNavigationFailed() {
        onFailure(g_test_name, g_test_id, 'ChromeFrame Navigation failed');
      }

      function OnObjectFocusFailed() {
        appendStatus('chrome frame focus failed');
        onFailure(g_test_name, g_test_id, 'Visibility test failed');
      }

      function OnCF1Loaded() {
        appendStatus('Chrome frame 1 loaded, not visible yet.');
        try {
          // Make chrome frame visible
          var cf1 = document.getElementById('CFDiv1');
          cf1.style.visibility = 'visible';
          appendStatus('Chrome frame 1 visibility - ' + cf1.style.visibility);
          // Set focus to chrome frame.  This should set focus to the
          // first element inside the frame, which a script inside the
          // page will detect and notify us back by sending us a message.
          document.ChromeFrame1.focus();
          g_failure_timeout = window.setTimeout(OnObjectFocusFailed, 10000);
        } catch(e) {
          appendStatus('Error setting focus to CF1. Error: ' + e.description);
          onFailure(g_test_name, g_test_id, 'CF1 focus() error');
        }
      }

      function OnCF1Message(evt) {
        if (evt.data == 'btnOnFocus') {
          window.clearTimeout(g_failure_timeout);
          g_failure_timeout = null;
          appendStatus('CF1 visible and focused');

          // Now make second chrome frame instance visible
          document.getElementById('CFDiv2').style.display = 'block';
          appendStatus('Chrome frame 2 visible, should start loading now');
          g_failure_timeout = window.setTimeout(OnObjectFocusFailed, 10000);
        }
      }

      function OnCF2Loaded() {
        appendStatus('Chrome frame 2 loaded');
        try {
          // Set focus to chrome frame.  This should set focus to the
          // first element inside the frame, which a script inside the
          // page will detect and notify us back by sending us a message.
          // We set focus on a timeout as on IE it takes a while for the window
          // to become visible.
          setTimeout(SetFocusToCF2, 1000);
        } catch(e) {
          appendStatus('Error setting focus to CF2. Error: ' + e.description);
          onFailure(g_test_name, g_test_id, 'CF2 focus() error');
        }
      }

      function SetFocusToCF2() {
        try {
          document.ChromeFrame2.focus();
        } catch (e) {
          appendStatus('SetFocusToCF2: Error: ' + e.description);
          onFailure(g_test_name, g_test_id, 'SetFocusToCF2 error ' +
                                            e.description);
        } 
      }

      function OnCF2Message(evt) {
        if (evt.data == 'btnOnFocus') {
          window.clearTimeout(g_failure_timeout);
          g_failure_timeout = null;
          appendStatus('CF2 visible and focused');
          onSuccess(g_test_name, g_test_id);
        }
      }
    </script>
  </head>
  <body>
    <div id="CFDiv1" style="visibility: hidden;"></div>
    <script type="text/javascript">
insertControl("CFDiv1",
    { "id": "ChromeFrame1",
      "width": "300",
      "height": "80",
      "src": "simple_object_focus_cf.html",
      "eventHandlers": { "onload": "OnCF1Loaded();",
                         "onloaderror": "OnNavigationFailed();",
                         "onmessage": "OnCF1Message(arguments[0]);" },
      "objectAttributes": { "tabindex": "0" },
      "embedAttributes": {"id": null}
    });
    </script>
    <div id="CFDiv2" style="display: none;"></div>
    <script type="text/javascript">
insertControl("CFDiv2",
    { "id": "ChromeFrame2",
      "width": "300",
      "height": "80",
      "src": "simple_object_focus_cf.html",
      "eventHandlers": { "onload": "OnCF2Loaded();",
                         "onloaderror": "OnNavigationFailed();",
                         "onmessage": "OnCF2Message(arguments[0]);" },
      "objectAttributes": { "tabindex": "1" },
      "embedAttributes": { "id": null}
    });
    </script>
    <div id="statusPanel" style="border: 1px solid red; width: 100%">
    Test running....
    </div>
  </body>
</html>