精华内容
下载资源
问答
  • 主要介绍了JS关闭子窗口并且刷新上一个窗口的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
  • 子窗口 js function CloseWin(target) {  if (target) {  target.$('#w').window('close');  }  else {  parent.$('#w').window('close');  } __doPostBack('S1', ''); } html

    子窗口
    js

    function CloseWin(target) {
        if (target) {
            target.$('#w').window('close');
        }
        else {
            parent.$('#w').window('close');
        }

    __doPostBack('S1', '');
    }

    html

     <asp:LinkButton ID="S1" runat="server" OnClick="erer"></asp:LinkButton>

    C#

     protected void erer(object sender, EventArgs e)
        {
            this.Response.Write("<script>window.parent.document.all('F1').click();</script>");

        }

    父窗口

    js

    var winLists = new Array();
    var winCount = 0;
    function ShowWin(title, url, w, h) {
        winCount++;
        var winId = "w" + winCount.toString();
        winLists[winLists] = { "id": winLists, "title": title };
        $("<div id=\"" + winId + "\"></div>").appendTo("body");
       
        $('#' + winId).window({
            title: title,
            top: 30,
            width: w,
            height: h,
            modal: false,
            shadow: true,
            closed: true,
            resizable: true,
            content: '<iframe name="winfrm" id="winfrm" src="' + url + '" width="100%" height="100%" frameborder="0" scrolling="auto"></iframe>'
        });

        $('#' + winId).window('open');

    }

      function UploadPhoto() {

                  OpenWin("选择", ".a.aspx?,720, 450);
                return false;
            }

     

     

    html

     

     <asp:LinkButton ID="F1" runat="server" OnClick="F1_click"></asp:LinkButton>

    updatepanel  (其中用上面的linkbutton触发父页面的updatepanel 局部刷新)

    展开全文
  • 引子  昨天晚上做一个项目,遇到的一个问题,...那么就遇到一个问题,在“添加试卷页”中点击“添加策略”按钮弹出添加策略页,添加策略后,父页面只能局部刷新(整体刷新会丢掉页面输入框未保存的数据)。  综

    引子

          昨天晚上做一个项目,遇到的一个问题,这个项目是一个在线考试系统,新建一份试卷的页面,要添加一些试题策略。点击添加试题策略,弹出添加策略的页面,策略编辑好之后提交,添加策略页关闭,当前添加试题页面策略列表刷新。那么就遇到一个问题,在“添加试卷页”中点击“添加策略”按钮弹出添加策略页,添加策略后,父页面只能局部刷新(整体刷新会丢掉页面输入框未保存的数据)。

          综上总结,浓缩成一句话啊,就是“父页面打开子页面,子页面完成操作后触发父页面的事件。”

    过程

          我在百度和必应里面搜一下,很多解决方案是用window.showModalDialog来实现的,因为它有返回值,可以根据返回值来实现。但是chrome37以后就不支持window.showModalDialog,考虑兼容性,就不能使用window.showModalDialog。所以说,只能用window.open打开,但是window.open没有返回值,所以只能在子页面中想办法触发父页面的事件。

          当时第一反应想到的就是,在父页面写一个公用事件,让子页面调用,很傻的一个想法,这想法实在太不靠谱了(但是我觉得程序员还是要敢于想象),因为每个页面都是一个对象实例,你调用公用方法,都不知道是在作用那个页面,其次,被直接调用的必须是静态方法,静态方法又是不能对页面控件做直接操作的,如果不是静态方法,就需要new一个页面,完全没有意义。

          接着想着从C#中来获取父页面,从而触发父页面的事件,找了一个发现,C#并没有好的方法能获取到父页面。那么就只能从js入手,我对js不是太了解,菜鸟都算不上的菜鸟,我的想法就是用js找到父页面(js在找父页面还是很方便的)。搜了一下,有下面几种方法:

          window.opener.document在页面运行结果如下:

    技术分享

          window.parent.document在页面运行结果如下:
    技术分享

                发现:

    window.opener.document获取的是父级页面。

    window.parent.document获得的是本身,很奇怪了。

    之后查阅了一些资料得出结论:

    window.parent能获取一个框架的父窗口或父框架。顶层窗口的parent引用的是它本身。
    window.opener引用的是window.open打开的页面的父页面。
    opener即谁打开我的,比如A页面利用window.open弹出了B页面窗口,那么A页面所在窗口就是B页面的opener,在B页面通过opener对象可以访问A页面。 
    parent表示父窗口,比如一个A页面利用iframe或frame调用B页面,那么A页面所在窗口就是B页面的parent。

     

    之后,就很顺利了的使用“window.opener.document.getElementById(‘Button1‘).click(); ”触发页面事件(我实现的是通过一个按钮来实现这个事件)。我们可以把这个按钮隐藏起来。

     技术分享

    经过以上种种实验和思考,终于实现了通过子页面js触发父页面某个按钮的单击事件,实现子页面刷新父页面局部数据的方法。

    结果

    截图如下:

    打开父页面,在文本框中随便输入一些内容(便于测试是不是仅仅刷新了局部)。

    技术分享

    点击打开子页面:

     技术分享

    点击刷新父级页局部

     

     技术分享

    可以看出,父页面仅仅局部被刷新了。

    技术分享
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>父级页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <div>
            <label runat="server" id="label1" style="color:blue">
                原始标记</label>
            <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <input type="button" value="打开子页面" onclick="window.open(‘WebForm2.aspx‘)" />
            <div style="display: none">
                <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />
            </div>
        </div>
        </form>
    </body>
    </html>
    WebForm1.aspx
    技术分享
    using System;
    namespace WebDemo
    {
        public partial class WebForm1 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
            protected void Button1_Click(object sender, EventArgs e)
            {
                label1.InnerText = "被局部刷新了";
                label1.Style.Add("color", "red");
    
            }
        }
    }
    WebForm1.aspx.cs
    技术分享
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head id="Head1" runat="server">
        <title>子级页</title>
    </head>
    <body>
        <form id="form1" runat="server">
        <asp:Button ID="Button1" runat="server" Text="刷新父级页局部" OnClick="Button1_Click" />
        </form>
    </body>
    </html>
    WebForm2.aspx
    技术分享
    using System;
    namespace WebDemo
    {
        public partial class WebForm2 : System.Web.UI.Page
        {
            protected void Page_Load(object sender, EventArgs e)
            {
    
            }
            protected void Button1_Click(object sender, EventArgs e)
            {
                Response.Write("<script language=‘javascript‘>window.opener.document.getElementById(‘Button1‘).click(); </script>");
            }
            
        }
    }

    WebForm2.aspx.cs

     下载Demo源码

    以上都是转载部分。。。。

    我的项目的实际情况和引子描述基本一致,原作者用的是window.open来弹出窗口。我用的是div包着iframe情况略有不同但是大同小异。

    子页面触发父页面局部刷新按钮事件

    protected void Button1_Click(object sender, System.EventArgs e)
    		{
                ScriptManager.RegisterStartupScript(Page, this.GetType(), "msg", "parent.window.document.getElementById('txt_tx').value='" + Request.Form["xz"] + "';parent.window.document.getElementById('btnTixi').click();parent.layer.close(parent.layer.getFrameIndex(window.name))", true);
    		}

     这里我用了layer框架的弹窗,并且给隐藏的textbox赋值,达到页面之间传值的效果。而父页面也是有一个隐藏的button等待子页面来触发,做局部刷新用

    <div style="display: none;">
                        <asp:Button ID="btnTixi" runat="server" Text="Button" CausesValidation="false" OnClick="btnTixi_Click" />
                    </div>
    protected void btnTixi_Click(object sender, EventArgs e)
            {
                xs_fw(this.txt_tx.Text.Trim());
            }

    这样就完成了,点击子页面上的某个按钮来触发父页面局部刷新


    展开全文
  • 要求在父窗口的数据列表里点击数据弹出子窗口预览,在弹出的预览页编辑内容之后关闭子窗口,同时静态刷新数据列表,而不是刷新整个父窗口。 如果在子窗口这样写是可以刷新父窗口但会全屏白一下不符合要求 // 刷新父...

    项目需求

    要求在父窗口的数据列表里点击数据弹出子窗口预览,在弹出的预览页编辑内容之后关闭子窗口,同时静态刷新数据列表,而不是刷新整个父窗口。
    如果在子窗口这样写是可以刷新父窗口但会全屏白一下不符合要求

    // 刷新父窗口
    window.opener.location.reload();
    window.open("about:blank", "_top").close();
    

    思路

    思路一、父子组件之间传参。
    子窗口传参给父组件,父窗口监听参数变化调用刷新方法。
    思路二、cookies传参。
    子窗口关闭时发送参数到cookies,父窗口监听cookies变化。
    后来发现父窗口在不做任何操作的情况下虽然接收到了参数但没法调用局部刷新的代码。
    最后写了一个时时侦听参数变化的代码可以实现了但是由于感觉这样太消耗资源还是被否了。

    mounted(){
    	//每秒钟检测一次cookies中refreshPage的变化
        setInterval(()=>{
        	if(this.$cookies.get('refreshPage') === 'true'){
            	this.$cookies.set('refreshPage','false');
                this.getReturnList();//局部刷新的方法
         }
       },1000)
    }
    

    解决方法

    最后在网上找了一段代码完美解决了,如下:
    父窗口:

    mounted(){
                this.getReturnList();
                // 将refreshPage方法绑定到window下面,提供给外部调用
                window['refreshPage'] = () => {
                    this.getReturnList();  //局部刷新的方法
                }
            },
    

    子窗口:

    window.opener.refreshPage()
    
    展开全文
  • 做程序过程,经常遇到弹...比如:通过弹出窗口来编辑和新增信息,当保存完成 子窗口关闭时自动刷新父页面上的一个gridview,将数据显示出来。通过jsp的 window.parent.opener.document.getElementById()解决这个问题
    做程序过程,经常遇到弹出新窗口设置或者编辑,关闭新窗口需要在父窗口中刷新部分控件或者数据,又不想刷新父窗口整个页面,因为父窗口部分输入或者部分操作会因为重新刷新重置。比如:通过弹出窗口来编辑和新增信息,当保存完成 子窗口关闭时自动刷新父页面上的一个gridview,将数据显示出来。通过jsp的 window.parent.opener.document.getElementById()解决这个问题。
    

    例如:子窗口中关闭时JS代码,启动父窗口中控件btnQuery:
    function refreshParentData() 
    { 
    if(window.parent.opener != null) 
    { 
    var btn = window.parent.opener.document.getElementById("btnQuery"); 
    if ( btn != null) 
    btn.click(); 
    else 
    window.parent.opener.location.href =window.parent.opener.location.href; 
    } 
    } 


    如果运行环境是.net,在父窗口中控件必须是html控件,然后通过父窗口JS函数调用父窗口C#函数,间接实现局部刷新的效果。

    一、网页弹出对话框

    function showDialog(param1,param2...)
          {
              settings = "dialogWidth:450px;dialogHeight:600px;help:no;status:no";
              mypage="dialogPage.aspx?param1="+param1+"¶m2="+param2+....;
              window.showModalDialog(mypage,window,settings);
          }


    在aspx文件中的html控件中调用即可,即<input type="button" id="btn" value="showDialog" οnclick="showDialog(param1,param2)" />
    param1,param2是两个参数,在调用时这两个值可动态生成,可使用<%#     %>技术。
    settings是用来设置弹出的对话框的一些状态,即宽度,高度,是否显示帮助按钮,是否显示状态栏,(但在IE中,设置状态栏的显示是没有用的,汗...)

    推荐使用仿制百度弹出窗口: http://hi.baidu.com/chybing2008/blog/item/981fd92cc433ccea8b1399a4.html


    二、当弹出的对话框对后台数据库作了改变时,需要刷新父页面时,请在弹出的对话框中引用下行代码:
    Response.Write("<script language='javascript'>window.dialogArguments.location.reload();window.close();</script>");
    该行代码是在服务器端执行的,若要在客户端执行的话,请直接调用:
    window.dialogArguments.location.reload();window.close();即可。

    三、把在对话框中获得的值传到父页面中

    function AddAgentId(agentId)
        {
           window.dialogArguments.theForm.txtTo.value = agentId;
           window.self.close();
        }


    在网页对话框中直接调用该函数即可,agentId在调用时可动态设置
    theForm及txtTo是父页的<form id="theForm"></form>中的ID值,txtTo是该窗体中的一个
    <asp:TextBox id="txtTo" runat="server" />ID值。

    补充:如果在网页对话框中要提交数据到后台文件执行,请在网页对话框(也是一个aspx文件)的头部加一句指令,加到<title></title>后部:
    <base target="_self" />这样,在对话框中提交时就不会再提交到一个新的文件中了。

    展开全文
  • [color=red]打开子窗口代码:[/color] [code="javascript"] function signature(id) { window.open('/jsp/process/banli/IMAction.do?id=${petitionLetter.id }','', 'height=500, width=500, top=0, ...
  • jsp 关闭子窗体刷新父页面

    千次阅读 2016-08-12 17:44:03
    1、第一步:在java后台类中设置,关闭弹出框后需要请求的菜单id String queryString = this.getRequest().getQueryString(); if(null!=queryString){ String mmid = queryString.split("=")[1]; this.get...
  • iframe里面: var flag=window.open(url,'',"height:100px,width=50px,help:no;status:no"); if(flag){ $("#form").attr("action",url); $("#form").submit(); } 打开的页面: success:funct
  • JQuery 关闭子页面,刷新父页面

    千次阅读 2017-05-19 14:44:33
    注意,这三个方法缺一不可1,执行完ajax方法以后关闭子页面,这个方法是写在子页面的!if(parent != null && parent.closePopBox != null && typeof(parent.closePopBox) == "function"){ parent.closePopBox();//...
  • 弹出一个窗口关闭刷新父页面,自己试过可以,不知道是不是你们要的效果
  • 我在百度和必应里面搜一下,很多解决方案是用window.showModalDialog来实现的,因为它有返回值,可以根据...所以说,只能用window.open打开,但是window.open没有返回值,所以只能在页面中想办法触发父页面的事件
  • 因为项目中需要进行流程审核,所以页面是跳到一个新的界面(window.open),在页面审核完成后跳回主页面进行刷新。所以使用windowonbeforeunload 页面:
  • Layui关闭弹层并刷新父页面表格

    万次阅读 2019-03-09 21:41:48
      最近一直使用TP5+Layui的组合,许多地方都要使用到关闭弹层然后刷新父页面表格的功能。   代码如下: //先得到当前iframe层的索引 var index = parent.layer.getFrameIndex(window.name); //再执行关闭 ...
  • layui 关闭弹窗,刷新父窗体页面

    千次阅读 2019-06-18 17:20:00
    关闭一个弹窗 当你想关闭一个弹窗时 var index = layer.open(); ...var index = layer.alert();...每一个弹窗都会产生一个index,我们可以根据index,关闭指定窗口 layer.close(layer.inde...
  • 用的是_window.Open()方式打开的窗口(风声js的window插件打开子窗口) ,类似于window.open() //用于刷新父窗口整个页面 window.parent.location.reload(); parent.subWindow_add.Clos
  • 不知道大家有没有碰到类似的问题,当时的你是什么思路来处理这个问题呢?是url,session,cookie,还是…… ...控件id.Click()方法为查询添加遮罩时,有感而发,我们这关闭子页面后,在父页面刷新自己,也可...
  • Vue实现关闭对话框后刷新列表

    千次阅读 2020-12-25 09:37:15
    Vue实现关闭对话框后刷新列表 有些场景需要实现用户弹窗确定后自动刷新列表,父窗口绑定fevent即可 父窗口代码 <template> <div> <el-button @click="$refs.editform.dialogFormVisible = true...
  • 小甲鱼零基础入门学习python笔记

    万次阅读 多人点赞 2019-08-14 11:06:30
    小飞机诞生 小飞机移动一个位置 屏幕刷新 if 用户鼠标产生移动: 我方飞机中心位置 = 用户鼠标位置 屏幕刷新 if 我方飞机与小飞机发生肢体冲突: 我方挂,播放撞机音乐 修改我方飞机图案 打印“Game over" 停止背景...
  • Father 1.新建一个按钮  2.JS function btnFreshData() { document.getElementById("btnFresh").click(); } Son 1.cs ...ClientScript.RegisterStartupScript(Page.GetType(), "", "window
  • Vue如何在iframe中刷新\关闭整个页面

    千次阅读 2020-08-29 15:40:21
    if(res.success){ parent.location.reload(); //刷新整个当前页 } function loadUrl(url) { if (window != top){ top.location.href = url; return; } window.location.href = url; }
  • 当我们在前端window.open打开一个页面,在页面操作完关闭,需要刷新父页面的时候,会因为没有获取到页面的关闭而不刷新。该怎么解决呢? var flag = window.open(url); var loop = setInterval(function(){ if...
  • 前端面试题

    万次阅读 多人点赞 2019-08-08 11:49:01
    在css/js代码上线之后开发人员经常会优化性能,从用户刷新网页开始,一次js请求一般情况下有哪些地方会有缓存处理? 25 一个页面上有大量的图片(大型电商网站),加载很慢,你有哪些方法优化这些图片的加载,给...
  • ajax(异步javascript xml) 能够刷新局部网页数据而不是重新加载整个网页。 如何使用ajax? 第一步,创建xmlhttprequest对象,var xmlhttp =new XMLHttpRequest();XMLHttpRequest对象用来和服务器交换数据。 var ...
  • js控制iframe的刷新(页面局部刷新

    千次阅读 2018-05-25 23:10:00
    今天遇到个问题,后台会员审核之后,页面内的会员审核状态要及时改变,但又不能指望用户手动刷新(用户体验很不好) 如果审核页面和显示审核状态时同在一个html页面的话,那么直接用js改变div内部的文本就可以了,...
  • C#基础教程-c#实例教程,适合初学者

    万次阅读 多人点赞 2016-08-22 11:13:24
    可以在命令提示符窗口运行可执行文件Welcome.exe,屏幕上出现一行字符提示您输入姓名:请键入你的姓名:输入任意字符并按下回车键,屏幕将打印出欢迎信息:欢迎! 注意,和我们使用过的绝大多数编译器不同,在C#中...
  • Javascript刷新页面的几种方法: 1 history.go(0) 2 location.reload() 3 location=location 4 location.assign(location) 5 document.execCommand('Refresh') 6 window.navigate(location) 7 location....

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,019
精华内容 3,607
关键字:

关闭子窗口局部刷新