现在有一个页面  有topframe  leftframe  mainframe 三个frame 当在leftfrmam点击链接时 在topframe里会显示一个提示 正在处理请求,页面加载完成后关闭提示, 现在链接需要请求到其他服务器,获取其他服务器的页面 显示在mainframe里 这时就无法监测页面加载完成的事件了。求个思路,怎么处理才能把topframe里的提示给隐藏了。

解决方案 »

  1.   

    onload 里写的隐藏不掉 已经无法监测页面加载是否完成了,另一个服务器是不允许写的
      

  2.   

    mainframe里面放的其他服务器的页面,就涉及到跨域问题,你原有的思路无法实现.
      

  3.   

    frame里没有 onreadystatechange 事件,iframe里有,如果是iframe可以这样写:
    <iframe src="http://xxx" onreadystatechange="doIt(this)"><script>function doIt(athis){
      var state = athis.readyState;
      switch(state){
        case 'complete'://完成
        //xxx
        case 'loading'://loading
        //xxx
        case 'interactive':
        //xxx
      }
    }
    </script>
      

  4.   

    这个效果是不是跟Java API的页面相似啊
      

  5.   

    经我测试,楼主需要的功能可以完成;共需要四个html文件,放在同一目录下,点击index.htm运行测试.
    测试环境Ie7,其它浏览器可能需要做js的相应修改,由于时间关系,你自己完成.
    现列出测试文件.
    index.htm
    <html><head>
    <meta HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
    <title>frame测试</title>
    <script type="text/javascript">
    function cls()
    {
    var topframe=document.frames("top");
    topframe.document.getElementById("txtstatus").value="加载完成";
    }
    </script>
    </head><frameset rows="100,*">
    <frame name="top" scrolling="no" noresize target="contents" src="top.htm">
    <frameset cols="150,*">
    <frame name="left" target="main" src="left.htm">
    <frame name="main" onload="cls();">
    </frameset>
    <noframes>
    <body> <p>此网页使用了框架,但您的浏览器不支持框架。</p> </body>
    </noframes>
    </frameset>
    </html>
    top.htm
    <html><head>
    <meta http-equiv="Content-Language" content="zh-cn">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>新建网页 1</title>
    <base target="contents">
    </head><body><p>加载状态:</p><input id="txtstatus" name="txtstatus"  value="" /></body></html>left.htm
    <html><head>
    <meta http-equiv="Content-Language" content="zh-cn">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>内网链接</title>
    <base target="main">
    <script type="text/javascript">
    function test()
    {
    var topframe=window.parent.parent.frames("top");
    topframe.document.getElementById("txtstatus").value="正在加载...";    
    }
    </script>
    </head><body>
    <!--<input type="button" value="test" onclick="test();" />--><p>内网链接:</p>
    <p>1.<a href="local.htm" onclick="test();">内网链接测试</a></p>
    <p> </p>
    <p> </p>
    <p>外网链接:</p>
    <p>2.<a href="http://map.baidu.com" onclick="test();">外网链接测试</a></p></body></html>local.htm
    <html><head>
    <meta http-equiv="Content-Language" content="zh-cn">
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>相同域下的网页</title>
    </head><body><p>相同域下的网页.</p></body></html>
      

  6.   

    只需要在那个加载页面上加一句话就ok 了:你可以试一下
    <script type="text/javascript" defer="defer">
        document.getElementById("topframe里面提示信息的id").style.display='none';
    </script>
      

  7.   

    一个可行的方法:
    在top里面先加载自己的页面,另外一个地址的页面放在隐藏的iframe里,加载完毕后将iframe显示,尺寸放大。参考#5楼的方法
      

  8.   

    如果baidu崩溃了或者服务根本就不允许访问,load就没有用了