GZICP.com   
 
    返回首页
    联系我们
 
 
     

JavaScript窗口功能——发挥窗口特征

www.gzicp.com   2005年1月9日 18:00:35
 

  在前面一节中,我们全面接触了JavaScript提供的窗口特征。许多这些特征是基于特殊浏览器的,就是说它们不可能同时在Internet Explorer和Navigator中工作。在这一节中,我们将探索几个有趣的方面,以及一些有用的技巧。

指定窗口尺度
  我们使用参数height、 width、 innerHeight 以及 innerWidth来定义新窗口的尺度。Internet Explorer支持height和width,Navigator则使用innerHeight和innerWidth。Navigator也支持outerHeight和outerWidth特征,它们指定了窗口外围边界的尺度,外围边界包括标题栏、滚动条以及其他操作系统元素。在Internet Explorer中,为达到同样目的,我们使用height、width、innerHeight和innerWidth。每种浏览器都将忽略其他特征,所以当创建新窗口时,就可以定义所有的4个。

  window.open("dimensions.html", "_blank", "height=150,innerHeight=150,width=200,innerWidth=200");

  如果在你的机器上有2种浏览器,你可以比较一下JavaScript的不同窗口尺度特征。

打开一个全屏幕窗口
  Internet Explorer支持fullscreen属性,使用它可以创建一个覆盖全屏的窗口,而不必考虑显示器的实际尺寸。看看下面的例子:

  <SCRIPT LANGUAGE="JavaScript">

  <!--

  var str = "left=0,screenX=0,top=0,screenY=0";

  if (window.screen) {

   var ah = screen.availHeight - 30;

   var aw = screen.availWidth - 10;

   str += ",height=" + ah;

   str += ",innerHeight=" + ah;

   str += ",width=" + aw;

   str += ",innerWidth=" + aw;

  } else {

   str += ",resizable"; // so the user can resize the window manually

  }

  function launchFull(url, name) {

   return window.open(url, name, str);

  }

  var win = launchFull("full1.html", "full");

  // -->

  </SCRIPT>

  让我们看看它是怎样工作的。首先,我们给全局变量str分配一个初始数值,它指定了新窗口位于屏幕的左上角。不要担心这个字符串,在本节稍候将解释它的含义。下一个语句检查浏览器是否支持screen对象。如果不支持,我们就使用resizable特征从而用户可以手工地改变新窗口的大小,最终适应整个屏幕。但是如果浏览器是支持screen对象的,那么就可以充分利用screen.vavilHeight和screen.vavilWidth来决定系统屏幕上工作区域的高度和宽度,包括任何系统元素,比如任务栏。由于height、width、innerHeight以及innerWidth等特征不能精确说明窗口边界,所以必须要减去大概象素的数值。

  如果想充分利用浏览器的fullscreen特征,仅仅加入下面的脚本程序就可以:

  var str = "left=0,screenX=0,top=0,screenY=0,fullscreen";

  我们不需要检查浏览器是否为Internet Explorer,因为当fullscreen特征定义后,其他特征就被忽略。

定义窗口坐标
  我们将使用left、top、screenX和screenY参数来指定新窗口的坐标。Internet Explorer支持left和top,Navigator则使用screenX和screenY。

  window.open("http://www.docjs.com/", "_blank", "left=20,screenX=20,top=40,screenY=40");

  记住,left应该总是与screenX一起定义,top与screenY一起定义。如果你使用过这些特征,你会发现Navigator同样支持left和top。然而,这是一个未公开的操作,所以你不要依赖于此(因为未来的Navigator版本也许不再支持它)。而且,如果对于left和screenX指定了不同的数值,Navigator将使用分配给screenX的数值。同样,如果指定了screenY,Navigator将忽视top。

  记住,这些特征都是以象素为单位的,并且以屏幕的左上角为基点。即使你在框架中调用window.open()方法,指定的值依然以屏幕的边界为准。

  打开一个居中的窗口

  现在你了解了如何放置一个新窗口,下面再添加一些算法。下面的脚本程序打开一个居中的窗口:

  <SCRIPT LANGUAGE="JavaScript">

  <!--

  function launchCenter(url, name, height, width) {

   var str = "height=" + height + ",innerHeight=" + height;

   str += ",width=" + width + ",innerWidth=" + width;

   if (window.screen) {

    var ah = screen.availHeight - 30;

    var aw = screen.availWidth - 10;

    var xc = (aw - width) / 2;

    var yc = (ah - height) / 2;

    str += ",left=" + xc + ",screenX=" + xc;

    str += ",top=" + yc + ",screenY=" + yc;

   }

   return window.open(url, name, str);

  }

  var win = launchCenter(’center.html’, ’center’, 220, 440);

  // -->

  </SCRIPT>

  这段脚本程序非常类似于全屏幕窗口的脚本程序。它使用了screen.availHeight和screen.availWidth属性,同时加上新窗口的期待尺寸,最终计算出窗口左上角的精确位置。如果你很难理解(aw-width)/2的含义,请看看下面的算式:

  (aw / 2) - (width / 2)

  如你所见,它们是一样的,就是从屏幕的中央减去窗口宽度的一半。同样的算法应用于窗口的垂直坐标。

向后兼容的链接
  当我们编写一个脚本程序时,考虑到那些不能使用JavaScript的用户是非常重要的,这常常发生在用户屏蔽掉浏览器中JavaScript功能的情况下。当这种情况发生时,我们应该仍然能够使用HTML装载一个窗口。看看下面的链接:

  <A HREF="http://www.docjs.com/" TARGET="win">Doc JavaScript</A>

  这打开了一个名为win的窗口,在其中装载定义的URL。下面的链接使用了JavaScript完成同样的目的:

  <A HREF="javascript:void(window.open(’http://www.docjs.com/’, ’win’, ’status’))">Doc JavaScript</A>

  基于JavaScript的链接创建了一个简单的窗口,它有一个状态栏,但是不包括其他默认元素(比如工具栏)。然而前面的HTML链接打开的窗口是一个默认的浏览器窗口。2种方法实现了同样的目的。使用JavaScript,我们可以控制新窗口的外观,但是如果浏览器不支持JavaScript,这样的链接就没有用了。所以,我们合并这些链接:

  <A HREF="http://www.docjs.com/" TARGET="win" onClick="window.open(’http://www.docjs.com/’, ’win’, ’status’); return false">Doc JavaScript</A>

  如果JavaScript是激活的,在装载HREF属性定义的URL前,浏览器就执行onClick事件处理程序。由于这个事件处理程序返回false,浏览器将忽略HREF属性,就好像用户根本没有点击链接。事实上,语句return false简单地中止了“点击”。如果浏览器不支持JavaScript,那么就不会运行onClick事件处理程序,因此,象其他HTML链接一样,指定的URL被装载。

www.csdn.net 听风

相关文章
·JavaScript窗口功能——命名窗口和框架(2005年01月09日)
·JavaScript窗口功能——打开一个新窗口(2005年01月09日)
·JavaScript窗口功能——创建弹出窗口(2005年01月09日)
·JavaScript窗口功能——定制新窗口(2005年01月09日)
·JavaScript窗口功能——发挥窗口特征(2005年01月09日)
·JavaScript窗口功能——检查一个窗口是否存在(2005年01月09日)
·JavaScript窗口功能——关闭窗口(2005年01月09日)
·JavaScript窗口功能——操纵窗口(2005年01月09日)
·JavaScript窗口功能——在窗口中书写内容(2005年01月09日)
·JavaScript窗口功能——引用已打开的窗口(2005年01月09日)
·JavaScript窗口功能——创建对话框(2005年01月09日)
最新文章
·JavaScript窗口功能——命名窗口和框架  (2005年01月09日)
·JavaScript窗口功能——打开一个新窗口  (2005年01月09日)
·JavaScript窗口功能——创建弹出窗口  (2005年01月09日)
·JavaScript窗口功能——定制新窗口  (2005年01月09日)
·JavaScript窗口功能——发挥窗口特征  (2005年01月09日)
·JavaScript窗口功能——检查一个窗口是否存在  (2005年01月09日)
·JavaScript窗口功能——关闭窗口  (2005年01月09日)
·JavaScript窗口功能——操纵窗口  (2005年01月09日)
·JavaScript窗口功能——在窗口中书写内容  (2005年01月09日)
·JavaScript窗口功能——引用已打开的窗口  (2005年01月09日)
·JavaScript窗口功能——创建对话框  (2005年01月09日)





 
 
Copyright © 1999-2005 GZICP.com All Rights Reserved