JavaScript初级教程(第三课)

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

JavaScript初级教程(第三课)

  2020-05-12 我要评论
本课的目的是调用目标名,本例中即窗口名yer_new_window。

    既然我们已经简单的重温了一下href目标, 那么该开始学习在JavaScript中打开窗口.

    在HTML中打开窗口应用极为普遍,但也有一些缺陷;用户浏览器决定窗口看起来是什么样的,你左右不了其窗口的大小及式样。幸运的是,JavaScript给了你这种控制权。

    看一看其原由:

    window.open("URL","name","features");

    本语句以你调用时采用的第一个参数URL来打开一个窗口。这里是以URL,实际中可写成"http://www.jsfan.org/basic" 或其他类似的东西。

    第二个参数是窗口的名字。这就象上页中我们看到的名字,如果你打开窗口时已有一个同名窗口打开,那么URL将把open语句送到原先已打开的窗口。

    第三个参数,features,是一个窗口所具有的不同特征。这是个可选参数,我们先做关于头两个参数的练习。

    这里是一些用JavaScript打开窗口的例子。

    试一下点击如下三个链接看看将发生什么。注意在三个链接都打开前别先关闭其中任何一个。(下面三行文字代码在转载过程中丢失,链接也已经失效,故不可点击,以后我会修正的----jsfan注)

    这是名为 javascript_1的窗口. 

    名为javascript_2的窗口. 

    这里是另一个将进入javascript_1的HTML页. 

    语句的首行:

    <a href="#" onClick="window.open('javascript_window_1.html','javascript_1');">Here's a window named javascript_1</a>.

    当你点击该链接时一个名为javascript_1 的窗口打开,其中出现javascript_window_1.html的网页。由于参数features是可选的,我们先不理会它。

    注意这里我是用onClick来调用打开窗口的。你大可不必将window.open()放在onClick中调用窗口,这很容易办到。一会你将看到在<script>标签中的windows.open()例子。

    第二个例子与第一个几乎一样的,它只是以不同的名字打开一个窗口及调用到不同的HTML页中。

    <a href="#" onClick="window.open('javascript_window_2.html','javascript_2');">Here's a window named javascript_2</a>.

    第三个链接将一个新的HTML 页放到第一个窗口中。这是由于你要打开的窗口和第一个链接重名:都叫javascript_1.

    <a href="#" onClick="window.open('javascript_window_3.html','javascript_1');">Here's another HTML page going into javascript_1</a>.

    妙事即将开始。我们加入第三个参数features,看看会发生什么。

    OK 让我们加入windows features再试试!
window.open()中的第三个参数是你想要你的窗口表现的一组特性。如果你不完全确定你的参数,则以用户浏览器的缺省值替代。

    然而,如果你指定了一些特性参数,则窗口将以参数设定值规定的出现。特性参数是以一组逗号分隔的序列出现的。

    例如,如果你是这么写的:

    window.open("some_url","window_name","location,menubar");

    你将得到一个规定了URL,窗口名及菜单条(文件,编辑条等等)的窗口。注意别在字符串中加入任何空格,这将使得有些浏览器出错。

    看一下另一个例子:

    window.open("some_url","window_name","location,height=100,width=100");

    这将打开一个高宽各为100像素的窗口。再次请注意别在字符串中加空格。

    这里是一组可以在字符串中引用的特性参数: 

    menubar (菜单条) 
    这是个在大多数软件应用中都引用的函数行。一般包括有文件,编辑及其他一些条目。

    status(状态条) 
    这是位于你的窗口下部的信息条。当你的鼠标移到一个链接上时,链接的URL就在这个状态条上出现。你可以将状态条上显示的内容搬到一个滚动的marquee 中去。我不打算为你做这个示例,如果你想知道怎样做,自己设法解决! 

    scrollbars (滚动条) 
    当需要时允许滚动条出现。

    resizable (重调) 
    当重调参数被列出,窗口将可被重调。注意它的拼法,我就经常搞错。 

    width (宽度) 
    以像素点表达的窗口宽。 

    height(高度) 
    以像素点表达的窗口高。 

    toolbar (工具条) 
    Home button, among others. 
    浏览器工具条,包括后退,前进钮,停止钮,以及HOME钮等等。 

    location (定位区) 
    你可以键入URL 的浏览器文本区。 

    directories (指示区) 
    如Netscape浏览器中所在的"What's new," "What's cool,"等等。 这里是一些不同类型窗口的示例。

    一旦你搞懂了这些例子,你就可以在你的一些窗口中实现它了。现在开始学窗口的具体内容

既然你已经知道如何按你自己的意愿打开窗口,那么现在开始学习怎样在窗口中操作一些事。在此之前你要学习一下JavaScript的文档对象模型(DOM),首先,让我们学一点“基于对象的编程”。

    概述基于对象的编程

    基于对象的编程 - 特别是JavaScript版本的 - 是比较容易理解的。其主旨是信息依据对象组织。JavaScript其优越处之一在于其带有一内建式对象库。例如,一个窗口即一个对象。无论何时我提到一个缺省的JavaScript库对象,我将使用大写(Window)。特定的情况(特定的窗口)将用小写。

    对象都有用以描述它们的属性。窗口对象的其中一些属性是它的名字,(即状态条上的字),窗口文件的URL,及窗口文件本身。(其中包括单字,图形及窗口中的超文本链接。)

    在JavaScript 中缺省的窗口对象为 window.这里你可了解你将如何获取缺省窗口的属性。

    var the_status = window.status;

    这是说:找到称为window 的status属性,将之调用到变量the_status中。窗口的status特性包含了状态条上出现的词句。你也可事先设置它,像这样:

    window.status = "I'm monkeying around!";

    这是一个使用状态条的例子。

    <a href="#" onMouseOver="window.status='Monkeys!';">Who do we love?</a>

    这是说:“当鼠标移动到这个链接上时,改变状态条。”

    对象的方法:
    除了属性之外,对象还具有“方法”。“方法”是对象所知的如何运作的进程。例如,窗口知道如何打开另一些窗口:

    window.open("URL,""name,""features")。它告诉Javascript用窗口的open方式来打开一个新窗口。

    因而,就象上例中,一个对象的“方法”也被称为其获取一个特性的方式:对象名,周期,而后是方式。主要的不同在于方法总在其后跟随一对含有方式参数的圆括弧。甚至当方法不调用参数时,圆括弧也必须有的。还记得这个吗?

    var italic_hippy = hippy_monkey.italics();

    对啦!字符串实际上就是对象, italics()即是字符对象的参数。 

    你已经看了一些窗口方法的例子但还没有了解它。对话框调用alert及prompt实际上也是窗口对象的方式。如果你调用:

    window.alert("Viva la primate!");

    你将看到对话框并读到“Viva la primate!”我们直接能试试这个闪烁的窗口.

    看起来好象有点傻,更好的效果可以参看调用其它窗口。
尽管将一个窗口模糊或聚焦并没有多大意义,但有时候你确实需要将另一个窗口移到前台。为了使用javascript实现窗口之间的交流,你需要对该窗口的一个引用。

    获取和使用一个窗口引用 

    首先,我打开一个窗口,为其赋予一个引用:

    var new_window = window.open("hello.html","html_name","width=200,height=200");

    该语句打开一个小窗口并将其赋值给变量new_window作为对该窗口的引用。变量可以包含数字和字符串,也可以包含对对象的引用,在本例中,对象是一个窗口。现在变量new_window就可以象当前窗口那样使用。你可以象对窗口调用方法那样对new_window调用方法。 

    下面的语句是一个对new_window调用方法的例子:

    new_window.blur();

    它实现的作用和上篇中的window.blur()一样。 

    现在我们看看将新窗口移到前台或移到后台的两个链接:

    <a href="#" onMouseOver="new_window.focus();">Bring it forward</a>

    <a href="#" onMouseOver="new_window.blur();">Put it backward</a>
现在我们已经了解了:JavaScript包括缺省对象,例如窗口,对象具有用于描述对象的属性,方法用于描述对象采取行动的方法。

    对象的属性页可以是对象。举例来说:窗口有一个属性叫做document,它用于引用到窗口中实际的HTML文件。该document属性本身就是一个对象。在谈到图象掉换(image swap)的时候,我们见到过这样的例子。你可以用下列语句作图象掉换:

    <a href="#" onMouseOver="window.document.the_image.src='button_d.gif';">change</a>

    上述语句的意思是说:找到window的document属性,找到the_image的src属性并将其设置为图象button_d.gif。这样写是因为窗口(windows)是对象,窗口内的文件(documents)是对象,而文件(document)内的图象(images)页是对象。

    看起来似乎很复杂,但它的结构很清楚。JavaScript的文档对象模型(Document Object Model)描述了对象之间的等级关系。

    在该教程中,我们只看到该等级关系的一部分。使你的网页具有精彩动感的大多数技巧都涉及到文件对象。文件对象内容非常丰富,实际上应该专门开一门教程将这个问题。在本课程中,我们
将集中谈谈窗口的其它属性。

    其它窗口属性主要和分割窗口有关。

    在JavaScript中,对分割窗口的处理方法和其它窗口是一样的。你只需利用javascript在一个出口里面修改另一个窗口外观,你可以改变各个分割窗口的样子。但你要记住,在一个窗口内
的各个分割窗口实际上被当作另外的几个窗口来对待,因为分割窗口可以再包含更小的分割窗口。也就是说,你有一个最高层的窗口,其中包含这第一级分割窗口,这个分割窗口实际上又是新的小窗口,小的窗口中又可以包含更小的分割窗口。但一般并不需将其搞得这么复杂。 

    下面是一个用javascript制作的分割窗口的例子。 

    首先,是分割窗口的窗框:

    <frameset rows="25%,*">
        <frame src="frames_example_controls.html" name="control_frame">
        <frame src="blank.html" name="target_frame">
    </frameset>

    这和普通的分割窗口窗框是一样的。你要记住给窗框内的各个分割窗口命名。第一个分割窗口的名字是control_frame, 其中包含这加入了javascript的HTML网页。第二个分割窗口的src="#",其中什么都不包含。 

    接下来,我们看看control_frame窗口内的内容。以下只是其中关键的一行:

    <a href="#" onClick="top.target_frame.document.writeln('Monkey do!<br>');">Monkey see</a>

    执行该语句时,JavaScript从窗口等级的最高层开始,该层中包含着分割窗口的窗框,从中发现名叫target_frame的分割窗口,由于该分割窗口是也一个窗口,所它具有窗口的文件(document)属性。JavaScript找到其document属性,并调用writeln()方法。其执行结果是在文件中写出"Monkey do!" 。writeln()是文件(document)对象的方法,所以我们必须写document.writeln(),而不只是 writeln()。

    在上个例子中,我们用到了内置变量top,该变量永远指分割窗口最高层次的浏览器窗口。如果你计划从分割窗口的最高层次开始执行命令,你就可以用top变量。

    另一个内置变量是parent, 指的是包含当前分割窗口的母窗口。如果在一个窗口内有分割窗口,而在其中的一个分割窗口中又包含着分割窗口,则第2层的分割窗口可以用parent变量引用包含它的母分割窗口。

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们