我们是把aspx的页面以<iframe></iframe>形式嵌入到了HTM页面,在这个aspx页面中的按钮中,用服务器代码Response.Write("<javascript:window.open('XXX.aspx")>...");的形式,从服务端打开新窗口,简单的说,是index.htm页的一个栏目,是一个XXX.aspx的页面以<iframe>嵌入的,当点击这个栏目的一个按钮,则以Response.Write("<javascript:window.open('XXX.aspx")>...");的形式打开新窗口,在新窗口关闭后,再点击“刷新”,则那个窗口又会弹出来;或者点击index.htm页链接,进入下一个页面后,再点击“后退”,则窗口又弹出来。
  首先 ,不允许屏蔽IE后退和刷新按钮(公司要求),
  另外,1 其他的本论坛的解决办法,也搜索了好多,但是这个问题还没解决;
        2 禁止刷新时服务器端代码再执行的代码
          if( Request.Headers["Accept"] != "*/*" )
          {
            ... ...
           }
         尝试过,不行。
         3 代码 Page.RegisterClientScriptBlock 尝试过,不行。
         4 类似清除缓存等的代码,尝试过,不行。
真是头疼,麻烦大家,看清楚我的问题,给予大力支持,SOS

解决方案 »

  1.   

    防止后退,你可以用window.open一个没有工具栏的窗口,把快捷键也封掉,防止刷新可以利用session
      

  2.   

    gshope(北京.Net) 首先 ,不允许屏蔽IE后退和刷新按钮(公司要求),
      

  3.   

    gshope(北京.Net) 首先 ,不允许屏蔽IE后退和刷新按钮(公司要求),
      

  4.   

    记得原来看过一片文章是用cookie控制的,记不大清楚了.
    能不能在你的Page.RegisterClientScriptBlock之前判断某个特定的cookie是否存在,如果存在就不注册.
    在注册代码的后面创建cookie.
    if(Request.Cookie["set"]==null)
    {
    Page.RegisterClientScriptBlock
    HttpCookie newCookie=new HttpCookie("set");
    Response.Cookies.Add(newCookie);}
    你可以尝试一下,不保证正确!
      

  5.   

    因为你是写在.cs后台代码中的,所以每次刷新都会执行的,就算写用!Page.IsPostBack判断也会跳出的。这个基本上没什么办法。
      

  6.   

    session是个办法,用SESSION判断试试IF NOT ISPOSTBACK看看
      

  7.   

    这样,在你的iframe里加上下面的代码,然后在开新窗口的时候判断一下if(top.name!="awaysrain")--------------
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function window.onunload(){
       top.name = "awaysrain";
    }
    if(top.name!="awaysrain"){
    top.open();
    }
    //-->
    </SCRIPT>
      

  8.   

    其实你这个就和防止刷屏增加点击数一样的道理,暂时还不知道好的解决方法。
    象上面的我们一般是用Session记录上次访问的时间,再用当前时间和这个Session时间对比,例如时间差超过10秒才继续执行。不过这个和你要的效果应该不是一样的。
      

  9.   

    演示代码
    demo.htm
    ------------------------------
    <iframe src="test.htm"></iframe>
    test.htm
    -------------------------------
    <SCRIPT LANGUAGE="JavaScript">
    <!--
    function window.onunload(){
       top.name = "awaysrain";
    }
    if(top.name!="awaysrain"){
    top.open();
    }
    //-->
    </SCRIPT>或者你在服务器端用session判断,如果开了新窗口就别Response.Write("<javascript:window.open('XXX.aspx")>...");
      

  10.   

    Response.Write("<javascript:window.open('XXX.aspx")>...");
    这句后再重定向到这张页一次
    Response.redirect("aaa.aspx");
    行么?
      

  11.   

    哦,错了,不能直接重定向,再多打印下面一句吧
    Response.write("window.document.getElementById(\"iframename\").src= \"aaa.aspx\"";
    aaa.aspx就是打开窗口的那张页。
      

  12.   

    在cookies中存储一个计数器判断