上一讲讲完后有没有自己做啊?是不是想过用了openWindow()方法后满屏幕都是新的浏览器窗口啊?这当然是不可能的。为什么呢?你有没有注意到我们在创建新窗口的时候
有一个name的参数呢?可是这玩意搞的鬼,为什么呢?因为这个名字赋予窗口一个唯一的标示符,没有两个窗口具有相同的名字。
第一次调用这个方法传递给他的是一个特定的窗口名,该方法将打开一个新窗口。第二次用该窗口名调用该方法,它只重复使用已经存在的窗口。如果要在该窗口中显示的是同一文档,浏览器将只刷新窗口。但如果要显示不同的URL,则现有窗口中显示新文档。这个对于你是很有用出的,仔细想想哦!
接下来就该到了远程控制了:
想来讲讲这玩意有什么用处吧,经过详细的侦察,我发现,我们可以用新窗口来控制主
浏览窗口的内容,这样你就可以不再需要导航栏咯,做出个有个性的网页哦!
那么第一步我们要做什么呢?(打死你,连这都不会!气我是不?)先创建个窗口啊,,我晕!!
<html>
<head>
<title>remote control</title>
<script language="javascript">
function openRemote(url) {
var remote=window.open(url,"weblogWindow","width=180,height=490
,scrollbar,resizable");
if (remote.opener==null) {
remote.opener=window;
}
}
</script>
</head>
<body>
<a href="javascript:openRemote(’weblogs.html’);">click here</a>
</body>
</html>
也可以直接这样做:<body onLoad="openRemote(’weblogs.html’);">
其他的不说了,就讲这个if语句。这一行很重要哦。如果浏览器窗口通过JavaScript创建了一个新窗口,那么原窗口就被引用为新窗口的opener。这个关系体现在新窗口的opener属性中,取值是原窗口。本来可以直接用的,那么为什么还要判断呢?这就要说到浏览器的兼容问题了,Navigator的一些版本不会自动设置该属性,所以我们就用这个
语句确保了opener的值被正确设置。如果...那么...,OK?
null什么意思?他是JavaScript中的一个特殊的值,就是什么都没有。
(什么?你都知道了。哦,这么回事?老虎不发威你还拿我当病猫啊?为了不浪费你的感情,接下来就是要动真格的了!!)
看weblogs.html的源码:
<html>
<head>
<title>Weblogs</title>
<script language="javascript">
function go(url) {
opener.location=url;
}
</script>
</head>
<body>
<a href="javascript:go(’http://toyoolee.xicp.net/kickyou.htm’);>kickyou</a><br>
<a href="javascript:go(’http://toyoolee.xicp.net/killyou.htm’):>killyou</a>
</body>
</html>
看懂了吗?看不懂就把源码打下来,看效果就知道了,这就是远程控制咯!没骗你吧?(什么?这个你也懂?我倒!我错了行了吧,那你看看这个好不?先别说我是来骗你感情的。)
远程搜索:
首先声明,使用该功能时,你要建立一个有搜索功能的主窗口才可以!
比方说你已经有了一个search.html页面,我们在这个页面上创造一个新的远程窗口:
<html>
<head>
<title>Remote Searching</title>
<script language="javascript">
function openRemote() {
var remote=window.open("searchremote.html","searchremoteWindow","width=350
,height=400,scrollbars=no,resizable=no");
if (remote.opener==null) {
remote.opener=window;
}
remote.opener.name="openerWindow"
}
</script>
</head>
看出来没有,多了个remote.opener.name,这一行的作用是设置opener窗口的name属性。我们本来不知道主窗口的名字的,当我们可以设置它,为什么要设置它呢?那就来看看你创建的新窗口searchremote.htm中有什么地方用得到吧:
....
<form target="openerWindow" action="search.asp">
...
</form>
...
哦,我最先看到了,是在targe中用了这个名字:“openerWindow”。有什么用处呢?
name属性就像框架的name属性,但是我们用javascript来设置它,而不用HTML。说到frame,zhi要我们知道那个窗口的name属性,就可以用target属性使链接和扁担从远程窗口重定向到主窗口。例如,我们在链接内加上“target="openerWindow"”,就可以把远程窗口中的链接指行主窗口。这只是一个HTML命名技巧,不要把它和javascript的opener属性相混淆。
既然我们有了openRemote()函数,那么只需要在远程窗口中创建一个搜索表单。把表单的target属性写成我们在上个脚本中设定的浏览器主窗口的名字就可以了。
这个远程表单完成的功能和其他的一样,不过结果是在主窗口中显示,而不是在本窗口中显示!
等一下,我们第一个脚本中没用target呢?这问题问的好啊,奖励你一个白眼啊,以为今天课讲这里就可以。。不识趣,好了,给你说说:
原因是:单独使用这个技术,将使javascript失去几乎所有对主浏览器窗口的控制。因为javascript不仅仅是可以改变链接的指向,你要是只想用这点的话我也没话说。你应该首先学习如何通过javascript控制opener而不是仅仅用HTML。远程控制可以演化为学多不同的东西,如对话框,控制面板等等,这些都需要javascript才能运行。结合这两种技术,就可以充分地利用两中工具,各有所补嘛!
拖下堂,随便说说函数和调试JavaScript:
函数格式:
function 函数名(参数) {
代码
}
编写函数四个步骤:
**用关键字声明函数,关键字就是:function。
**给函数命名。调用的时候,就通过函数名来实现。
**在圆括号内列出参数。参数是函数调用是直接传递过来的信息。在函数内部,参数可
以像一般变量一样使用
**{}这个里面就是要执行的代码了。
再具体就不多讲了!看看上面的例子就差不多了。
说说调试:
为什么要调试?出错了呗!~~~代码错误就叫bug,记好了哦!有了bug怎么办?
1:仔细阅读错误信息
错误信息通常会确切的告诉你浏览器在哪里碰到了错误;它回给出行号和具体的字符
。NETSCAPE提供了一个方便的工具叫做JavaScript控制台,这是个单独的窗口。地址是:Netscape浏览器,工具栏,工具菜单,JavaScript控制台。
2:注意打字错误
谁都会犯这样的错误的,特别是新手。好好找找。
3:出去转转
老看电脑屏幕你的人脑也回死机的,出去看看PPMM或SSGG(我刚发明的,意思是帅帅的哥哥),呼吸下新鲜空气什么的,也许回来就看到什么错误了!
这一讲就算完了,咱们也学了两章了,明天就开始学习框架控制了,有空预习一下啊!
|