JavaScript窗口功能指南之打开一个新窗口

原创 2001年03月22日 03:00:00
JavaScript窗口功能指南之打开一个新窗口
(作者:听风编译 2001年01月19日 11:35)

  当你点击一个简单的链接打开一个新窗口时,你没有对新窗口任何控制权。浏览器以默认的功能打开新窗口。此外,你也不能使用JavaScript引用新窗口的window对象,因此你不可能操纵新窗口的属性。看看下面的JavaScript语句:

  window.open("http://www.docjs.com/", "win");

  这条语句打开一个新窗口,显示页面http://www.docjs.com/。 新窗口的名字被赋值为 "win"。window对象的open()方法的基本语法是:

  window.open(sURL, sName);

  2个参数都是可选的,如果不想指定URL或者窗口名称,就使用空字符串("").

  sURL 是一个字符串,它指定了要显示文档的URL。如果不指定URL,就产生一个空窗口。 sName 是定义的窗口名字,这个名字被用于<form>或者<a>标记的 TARGET 属性。在Internet Explorer 5 和以后版本,如果定义这个数值为 "_search",那么就将在浏览器的搜索区打开 sURL 。

  如果带有同一参数sName执行window.open()方法2次,会发生什么呢?就象用HTML产生的窗口一样,如果你定义一个已经存在窗口的名字,那么open()方法将简单地利用存在的窗口,而不是打开一个新的。看看下面的脚本程序:

  window.open("http://www.javascript.com/", "win");

  window.open("http://www.docjs.com/", "win");

  执行上面的语句,浏览器将打开一个名字为“win”的新窗口,并在其中显示页面www.javascript.com。第2条语句替换当前窗口内容为页面www.docjs.com。下面的语句产生2个不同的窗口显示各自的内容:

  window.open("http://www.javascript.com/", "win1");

  window.open("http://www.docjs.com/", "win2");

  如果不指定新窗口的名字,浏览器就自动地产生一个新窗口。这同样适用于“_blank”,但是空字符串是另外一回事。对于Internet Explorer和Navigator,有几个重要的区别,如下:

window.open("http://www.cnn.com/");
window.open("http://www.usatoday.com/");
Internet Explorer Navigator
打开2个不同的窗口 打开2个不同的窗口

window.open("http://www.cnn.com/", "_blank");
window.open("http://www.usatoday.com/", "_blank");
Internet Explorer Navigator
打开2个不同的窗口 打开2个不同的窗口

window.open("http://www.cnn.com/", "");
window.open("http://www.usatoday.com/", "");
Internet Explorer Navigator
打开2个不同的窗口 只打开一个窗口,名字为空("")

  下面一行不会用到,只是列举出来。如果想命名窗口,就给出一个可以理解的名字(不是"")。如果不想命名,就干脆不指定这个参数,或者使用特殊的target位置"_blank"。

  关于open()方法的一个重要之处是:open()方法几乎总是以window.open()的形式被调用执行,即使window代表了全局对象从而可以彻底省略。由于document对象也有open()方法,所以当我们想打开一个新窗口时,指定window对象将会清晰必要。在事件处理中,必须指定window.open(),而不能简单地使用open()。由于JavaScript中静态对象的作用范围限制,没有指定对象名字的open()调用等价于document.open()。比如说,当一个HTML按钮的事件处理发生时,范围就包含了按钮对象、表单对象、文档对象,以及窗口对象。这样,如果那样一个事件处理器引用了open()方法,识别器在文档对象就中止,事件处理器打开一个新的文档,而不是打开一个新的窗口。

返回值
  为了合适地引用子窗口,应该将window.open()的结果分配给一个变量。如果窗口被成功地创建,window.open()就返回新窗口对象,或者返回null表示创建失败(比如由于内存不足)。如果你的脚本程序需要引用新窗口的元素,返回值就是非常重要的。然而,当新窗口打开后,并没有“父-子”关系存在。看看下面的语句:

  var recentTips = window.open("http://www.docjs.com/tips/", "tips");

  这里,我们分配给新窗口的window对象一个变量值名叫recentTips。如果在函数中调用window.open()方法,记住一定要省略var关键字,因为变量应该是全局的。否则,window的引用就位于局部变量中,并且当函数执行完毕后就不能被访问。下面的语句在一个alert对话框中显示新窗口的URL:

  alert(recentTips.location.href);

  你也可以通过下面的方法改变新窗口的URL:

  recentTips.location.href = "http://www.usatoday.com/";

  在前面一节中,你已经看到了如何使用HTML链接和表单打开一个新窗口。通过指定target属性或者给window对象的name属性分配一个数值,我们就能够命名窗口。但是怎样才能通过它的html名字来引用存在的窗口呢?答案是简单的。如果你执行了带有空字符串的URL参数以及存在窗口名字的window.open()方法,这个窗口的引用就会被返回。看看下面的链接代码:

  <A HREF="http://www.cnet.com/" TARGET="news">CNET</A>

  当执行下面的语句时,就得到了新窗口的引用:

  var latestNews = window.open("", "news");

让我们再试一试。点击这个链接 CNET,但它装载后,点击下面的按钮:
  这个按钮实际上取回了名字叫做“news”的窗口的引用,并且修改了那个窗口的URL。注意,如果在点击按钮前不点击那个链接,一个新的、空的窗口就被装载(因为指定的窗口名字不存在)。记住,不管窗口中的文档是什么,窗口始终保持着它的名字。下面是这个按钮相关的HTML和JavaScript代码:

  <SCRIPT LANGUAGE="JavaScript">

  <!--

  function changeURL(winName, newURL) {

   win = window.open("", winName);

   win.location.href = newURL;

  }

  // -->

  </SCRIPT>

  <FORM>

  <INPUT TYPE="button" VALUE="Load ZDNet"

  onClick="changeURL('news', 'http://www.zdnet.com/')">

  </FORM>

  前面一段脚本程序表明了如何获取一个存在窗口的引用。如果你仅仅想改变存在窗口的URL,你同样可以直接使用目标页面的URL来调用window.open()方法:

  function changeURL(winName, newURL) {

   win = window.open(newURL, winName);

  }

  在下面一节中,我们将讨论如何定制新窗口的外观

html----javascript----只打开一个新窗口

新开窗口// 调用 openNewWin(url)    var newWinObj = null;    function openNewWin(url)    {        if(window...
  • flyxiaoye
  • flyxiaoye
  • 2007年12月24日 13:30
  • 488

JavaScript窗口功能指南之打开一个新窗口

标题     JavaScript窗口功能指南之打开一个新窗口    hktl(转贴) 关键字     JavaScript窗口功能 出处     http://www.cci...
  • rickjelly2004
  • rickjelly2004
  • 2004年07月01日 10:40
  • 920

JavaScript窗口功能指南之打开一个新窗口

当你点击一个简单的链接打开一个新窗口时,你没有对新窗口任何控制权。浏览器以默认的功能打开新窗口。此外,你也不能使用JavaScript引用新窗口的window对象,因此你不可能操纵新窗口的属性。看看下...
  • alex197963
  • alex197963
  • 2007年05月06日 00:23
  • 749

JavaScript窗口功能指南之打开一个新窗口

当你点击一个简单的链接打开一个新窗口时,你没有对新窗口任何控制权。浏览器以默认的功能打开新窗口。此外,你也不能使用JavaScript引用新窗口的window对象,因此你不可能操纵新窗口的属性。看看下...
  • xue_feitian
  • xue_feitian
  • 2010年02月03日 10:47
  • 525

Matlab常用操作。。

(1)管理命令和函数 addpath :添加目录到MATLAB搜索路径 doc      :在Web浏览器上现实HTML文档 help     :显示Matlab命令和M文件的在线帮助 hel...
  • xiaoding133
  • xiaoding133
  • 2011年12月31日 15:19
  • 941

JavaScript打开新窗口属性设置

width=40 将新窗口宽度设置为特定象素(例子中为400)height=300 设置新窗口的高度location=no 设置新窗口中是否显示地址栏,可选值为"是"或"否"menubar=no 设置...
  • icebery
  • icebery
  • 2004年08月09日 10:25
  • 4342

JavaScript窗口功能指南之定制新窗口

window.open()方法的基本语法结构是:     window.open(sURL, sName);   然而,你可以通过使用2个附加的参数定制新窗口:   window.open(sURL,...
  • alex197963
  • alex197963
  • 2007年05月06日 00:27
  • 525

JS 新窗口打开超链接

第一种  给a标签添加点击事件: 源码: //点击百度一下 进行百度搜索 $("#baiduBtn").click(function(){ this.hr...
  • w605283073
  • w605283073
  • 2015年06月19日 15:57
  • 1801

JavaScript确认框、对话框、新打开窗口

JavaScript-警告(alert 消息对话框) 语法: alert(字符串或变量); JavaScript-确认(confirm 消息对话框) 语法: confirm(st...
  • qq_34803572
  • qq_34803572
  • 2017年04月01日 19:22
  • 293

js处理a标签如何区别是否在新窗口中打开

使用方法:在下面的js代码里面前面写了,大家可以看看直接复制粘贴就可以用了有问题可以联系我 一 让整个网页页面内的链接都在新窗口打开:在head中加入  二 让一个DIV里所有...
  • for12
  • for12
  • 2015年09月10日 18:17
  • 1412
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:JavaScript窗口功能指南之打开一个新窗口
举报原因:
原因补充:

(最多只允许输入30个字)