1,基本描述

oNewWindow = window.open( sURL , sName , sFeatures, bReplace)

  window.open在打开一个窗口(其url为sURL)后,将返回一个代表该窗口对象的一个变量oNewWindow,如果打开不成功,则oNewWindow的值为null。同时为了对打开的窗口预先做一些控制,提供了其他一些参数(sName、sFeatures、bReplace)可供选择配置,下面将具体说明每个参数的含义

  * oNewWindow:被打开的窗口的对象
  * sUrl:被打开窗口的url
  * sName:在哪个窗口打开新的url链接,例如可以为_blank(新窗口)、_top(最外层窗口)等等
  * sFeatures:对窗口的一些控制属性
    o fullscreen:是否为全屏模式(相当于F11的效果),可取值:yes/1、no/0
    o directories:是否带有目录按钮(例如收藏夹中的’链接’目录),可取值同上
    o location:是否带有地址栏,可取值同上
    o channelmode:是否为影院模式,可取值同上
    o menubar:是否带有菜单条,可取值同上
    o resizable:是否可以改变窗口的尺寸,可取值同上
    o scrollbars:是否带有滚动条,可取值同上
    o status:是否带有状态栏,可取值同上
    o titlebar:是否带有标题栏,可取值同上
    o toolbar:是否带有快捷工具栏,可取值同上
    o height:窗口高度
    o width:窗口宽度
    o top:距屏幕上边缘的距离
    o left:距屏幕左边缘的距离
       * bReplace:如果在同一窗口打开新窗口,该值用于指定是否在history中替换原窗口的url链接,可取值:true/false

2,基本使用

  在一个新窗口中打开某个链接link(/myoa/admin/manage.jsp)

    window.open ( “/myoa/admin/manage.jsp” ) 或者 window.open ( “/myoa/admin/manage.jsp” , “_blank” ) ;
    注意:这样的话,每次执行都会打开一个新窗口,即使上次打开的新窗口未关闭,仍然会弹出新的

  在指定的某个窗口中打开某个链接link(/myoa/admin/manage.jsp)

    window.open ( “/myoa/admin/manage.jsp” , “myWiddown” ) ; //myWindow即为窗口的名称
    注意:如果myWindow窗口不存在,那么将会新弹出一个窗口,并将新窗口命名为myWindow,只要该窗口不关闭,那么以后执行该open,弹出窗口均为这个已经存在的myWindow
    另外,有一些窗口名称已经被浏览器使用,具有特殊的含义,例如:_blank、_top、_parent、_self等

  打开一个新窗口,要求窗口高度300px、宽度500px、不带滚动条、不带地址栏(/myoa/admin/manage.jsp)

    window.open ( “/myoa/admin/manage.jsp” , “_blank” ,“height=300,width=500,scrollbars=no,location=no” ) ;

    注意:sFeatures这些参数之间是用逗号分隔的,而在window.showModalDialog中,是用分号进行分隔的,一定要注意!

3,高级部分

  原窗口与弹出窗口之间的对象定位
    概述:弹出窗口是我们在页面编程中经常使用的一种方式,从互动角度分析,弹出窗口主要有两种类型,一种是信息显示窗口,例如人员信息、文章信息等等;另外一种是继续处理窗口,例如有些项目中,新建文章就是弹出窗口来完成的。对于信息显示窗口,用户看完之后关闭就可以了,但是对于继续处理窗口,在用户继续处理之后,往往需要与原窗口进行互动,例如当在新窗口中创建一篇文章提交后,希望在弹出窗口关闭的同时,原窗口能够刷新等等。

    解决方式:上面方式的一个关键就是,如何获取原窗口与弹出窗口对象,在DOM模型中我们可以明确的看到:
         原窗口中获取弹出窗口对象:var infoWindow=window.open ( “create.jsp” , “_blank” , “width=500,height=400″ ) ;//infoWindow即代表了弹出窗口的window对象,例如在弹出窗口中有一个表单(myForm)和表单中的一个输入控件  (username),我们可以这样操作:infoWindow.document.myForm.username.value=“lisi”;

           弹出窗口中获取原窗口对象:如上例,在create.jsp中,我们可以如下操作来刷新原窗口opener.location.reload () ;//opener是DOM中提供的一个默认对象,表示的就是某个窗口的原窗口。

  window.open的缓存处理
    概述:如果window.open链接的target指定的是一个已经存在了的窗口,尤其是原页面中的一个frame和iframe的话,此时 window.open打开的链接页面将不会从服务器重新请求,而是使用浏览器中相应的缓存页面,至少ie给人的感觉就是这样的.

    例如:

      <input type=“button” value=“显示列表” onclick=“window.open(’/myoa/users/list.jsp’,'main’,”)” />

      <iframe name=“main” src= “/myoa/users/list.jsp” width= “100%” height= “600″  frameborder="0″ ></iframe>

      第一次访问该页面是可以看到一个列表,那么此时即使新创建一条记录,那么再点击“显示列表”按钮时,会发现列表没有发生变化,此时关闭浏览器重新进行发现列表出现了刚创建的那条记录,可见缓存起了作用。

    解决办法:实验中我们发现,中导向链接不会发生上面的现象,每次都是重新请求,同样是上面的例子,使用下面的方式就是可以的:

        <a href= “/myoa/users/list.jsp” target= “main” >显示列表</a>
        <iframe name= “main” src= “/myoa/users/list.jsp” width= “100%” height= “600″ frameborder=“0″ ></iframe>

        不过有许多时候,我们不得不使用window.open到本页面某个iframe的方式,那么可以这样解决:

        <input type=”button” value=”显示列表” onclick=”document.getElementById(’showlist’).click()”/>
        <a href=”/myoa/users/list.jsp” target=”main” id=”showlist” style=”display:none”>显示列表</a>
        <iframe name=”main” src=”/myoa/users/list.jsp” width=”100%” height=”600″ frameborder=”0″></iframe>

window.open打开新窗口 参数的更多相关文章

  1. ajax请求响应中用window.open打开新窗口会被浏览器拦截的解决方式

    一.问题描述 ajax 异步请求成功后需要新开窗口打开 url,使用的是 window.open() 方法,但是会被浏览器给拦截了,需要用户点下. 二.问题分析 浏览器之所以拦截新开窗口是因为该操作并 ...

  2. 几个主流浏览器 Window.open打开新窗口 、模拟a标签打开新窗口的 表现

    Window.open打开新窗口 1.常用浏览器打开新窗口(正常打开window.open)的的不同表现形式(PC/移动端) 2.Window.open在异步处理中打开(_blank) a标签在异步处 ...

  3. window.open()打开新窗口教程

    使用 window 对象的 open() 方法可以打开一个新窗口.用法如下: window.open (URL, name, features, replace) 参数列表如下: URL:可选字符串, ...

  4. window.open打开新窗口被浏览器拦截的处理方法

    一般我们在打开页面的时候, 最常用的就是用<a>标签,如果是新窗口打开就价格target="_blank"属性就可以了, 如果只是刷新当前页面就用window.loca ...

  5. 使用window.open打开新窗口被浏览器拦截的解决方案

    问题描述: 代码中直接使用window.open('//www.baidu.com', '_blank');会被浏览器窗口拦截 原因浏览器为了维护用户安全和体验,在JS中直接使用window.open ...

  6. js 模拟window.open 打开新窗口

    为什么要去模拟window.open() 打开一个 新的窗口呢,因为有些浏览器默认会拦截 window.open, 当需要函数中打开新窗口时,接可以使用a标签去模拟打开. /** * a模拟windo ...

  7. window.open 打开新窗口被拦截的解决方案

    最近公司开发的一个项目,平凡用到下载各种类型的文件,但是例如.txt,.jpg,.pdf格式的文件呢浏览器会在当前窗口直接打开,影响用户体验,尝试各种方案和百度总结一下几点: 原理: 当window. ...

  8. window.open()打开新窗口 及参数

    在jsp页面中需要使用到弹出窗口,想到js的window对象有一个open方法可以弹出窗口,于是对open方法进行记录. 首先是open方法的语法及定义: 定义: open() 方法用于打开一个新的浏 ...

  9. window.open()打开新窗口被拦截

    window.open( url )是常用的打开新页面的方法,一般都没有问题,但是如果在ajax回调方法里面使用就会被浏览器拦截,因为在浏览器安全机制中,页面弹窗必须是由用户触发的才是安全弹窗,比如说 ...

随机推荐

  1. VirtualBox-- 虚拟机网络设置2--主机与虚拟机互相访问且均上外网

    转载自:http://blog.sina.com.cn/s/blog_7de9d5d80100t2uw.html   VirtualBox中有4中网络连接方式:NATBridged AdapterIn ...

  2. MVC6 发布IIS

    asp.net5的MVC6发布出来的结果和MVC5之前版本的相差太远了,直接在本地的IIS服务器上面是不可能运行的. 看了汤姆大叔的MVC6项目发布与部署,讲了很多丰富的知识点.但是对于立即要解决问题 ...

  3. vue模板编译

    Vue 的模板编译是在 $mount 的过程中进行的,在 $mount 的时候执行了 compile 方法来将 template 里的内容转换成真正的 HTML 代码. complie 最终生成 re ...

  4. 学习笔记38—国外appleID注册教程

    国外appleid注册教程来啦….至于国外appleid有什么用处就不过多的介绍了,需要的人自然是知道,不知道的百度下.1.首先打开苹果appleid注册网址:https://appleid.appl ...

  5. Shell Trap信号管理

    trap命令用于指定在接收到信号后将要采取的动作.常见的用途是在脚本程序被中断时完成清理工作.不过,这次我遇到它,是因为客户有个需求:从终端访问服务器的用户,其登陆服务器后会自动运行某个命令,例如打开 ...

  6. You Don't Know JS: Scope & Closures (附加:Lexical/dynamic作用域)(附加:Lexical-this)

    JavaScript只有Lexical Scope 模式 Lexical Scope就是在写代码的时候,定义函数的时候创建的作用域! 而动态作用域是在runtime时,函数被调用的地方的作用域! 实际 ...

  7. 胜利大逃亡 HDU - 1253

    Ignatius被魔王抓走了,有一天魔王出差去了,这可是Ignatius逃亡的好机会. 魔王住在一个城堡里,城堡是一个A*B*C的立方体,可以被表示成A个B*C的矩阵,刚开始Ignatius被关在(0 ...

  8. 【IDEA】【7】Git更新及提交

    如果是Git管理的项目,顶部会出现这样的按钮 绿色代表commit到本地 蓝色代表update最新代码 Push:推送到远程服务器:右键项目->Git->Repository->Pu ...

  9. 关于react16.4——转发refs和片段Fragment

    1.转发refs Ref 转发是一种自动将 ref 通过组件传递给子组件的技术. 一些组件倾向于以与常规 DOM button 和 input 类似的方式在整个应用程序中使用, 并且访问他们的 DOM ...

  10. hdu-6341-搜索

    Problem J. Let Sudoku Rotate Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 262144/262144 K ...