上一讲讲的内容今天没忘吧?
先复习一先:opener.name,opener.location,onLoad具体内容不说了,不记得的一定先回上讲弄清楚了再看这一讲!
好我们的教程已经讲到第三章了,不慢哦!那么你一定知道,框架可以把窗口分成几个部分,每个部分本身是一个小范围。这和javascrip有什么关系呢?有了它,我们可以很好的控制框架,能够从各方面控制它们。
那么你把框架用来做什么呢?我想最通常的是做为“导航设置”吧,一个辅助框架提供工具栏,一个主框架显示内容。那现在我们就用HTML来创建一个框架:
<html>
<head>
<title>Book Shop</title>
</head>
<frameset cols="140">
<frame src="tool.html" name="toolbar">
<frame src="main.html" name="main">
</frameset>
</html>
在toolbar框架里的文档tool.html中的一个链接,我们使用target属性告诉链接需要载入的目标文档的位置。
这里是tool.html中的一个链接:
<a href="allbooks.htm" target="main">Allbooks</a>
这里是HTML的,那么用JavaScript应该怎么做呢?
parent.main.location="allbooks.htm";
做法不同,但思想是一致的。
关键是main.location:它告诉javascript访问main框架的locationg属性,而不是当前窗口的location属性(即window.location)
那么前面的parent有什么用呢?
不论何时,创建新的框架,如main和toolbar,他们都会成为框架组的属性。因此,当你想要从toolbar访问main,将不得不找到定义toolbar的框架组(默认叫做parent),然后从那里访问main。
当你创建一个框架时,它将成为包容它的框架组的一个属性。那么,我想创建一个远程控制的窗口--在tool.html里,那么怎么控制显示在main框架的内容呢?很简单,我们在第一章里讲过javascript爬树还记得吗?一层一层的爬来就可以了:
function go(url) {
opener.parent.main.location=url;
}
概念很简单:远程控制窗口的打开者-tool.htm的父框架-main的文档位置。
那么我一下子又不想用框架了该怎么办?不用着急,我们使用JavaScript就是因为它可以扩展和缩减你的框架。
我们只要在toolbar中创建一个链接来改变框架组parent,把他的url改为main的url:
<a href="javascript:parent.location=parent.main.location;">Hide tool</a>
这是扩展,收缩更容易,用后退就是咯,history.back()
确保当前框架是浏览器窗口中唯一的一个:
if (parent != window) {
parent.location=window.location;
}
这个方法是使文档窗口(或框架组)处于顶层(也就是说,没有其他的框架叠在上放)。这样我们的网页就有了防盗功能了哦!
还有一个问题,我想点击toolbar.htm中的一个链接时,toolbar.htm和main.htm中的网页都
换内容,那么该怎么办?
我们上次用的是parent.main.location=url,这次连toolbar的也改了不成了?
function changePages(toolbarURL,mainURL) {
parent.toolbar.location=toolbarURL;
parent.main.location=mainURL;
}
我们在tool.html中使用这个链接后就可以搞定了
<a href="javascript:changePages(’toolbar_document2.htm’,’main_document2.htm’);"
>Change double</a>
下面来讲个许多网页浏览者不愿意看到的东西--广告,我们这也是不得已,我们要想让自己的网页生存下去就要用广告来支持。在框架里,我们每隔5秒就更替一次广告:
<frameset onLoad="rotate();" cols="30%,70%" frameborder="no" border="0"
framespacing="0">
<frameset rows="",200" frameborder="no" border="0" framespacing="0">
<frame name="little" src="little.html">
<frame name="rotateFrame" src="rotate1.html">
</frameset>
<frame name="big" src="big.htm">
</frameset>
这个过程包括三个框架:ig、little和rotateframe。最后一个框架就是显示更替HTML文档的地方。当这个框架组装载时,一个叫做rotate()的函数就开始运行。我们还需要定影一些变量来控制更替的各个方面。
var prefix=’rotate’;
var currentPage=0;
var totalPages=3;
var lulltime=5000;
对于我们将要更替的广告网页,有一个特别的命名模式。
所有的HTML文档都要有相同的文件名前缀,如变量prefix所定义的那样。
在前缀后,文档应该包含一个数字(从1开始增长)。而变量totalpages指定了需要更替的网页总数。这里设为3。最后,lulltime指定的是更替的时间间隔(以毫秒为单位)
这些都搞定之后,我们就需要创建一个函数拉力顺序地更替这些网页。这就是rotate():
function rotate() {
if (currentPage<totalPages) {
currentPage++;
}
else {
currentPage=1;
}
parent.rotateFrame.location=prefix+currentPage+’.html’;
setTimeout(’rotate()’,lulltime);
}
让我们来看看整个的代码:
<html>
<head>
<title>A Little Rotation</title>
<script language="JavaScript">
var prefix=’rotate’
var currentPage=0;
var totalPages=3;
var lullTime=5000;
function rotate() {
if (currentPage<totalPages) {
currentPage++;
}
else {
currentPage=1;
}
parent.rotateFrame.location=prefix+currentPage+’.html’;
setTimeout(’rotate()’,lulltime);
}
</script>
</head>
<frameset onLoad="rotate();" cols="30%,70%" frameborder="no" border="0"
framespacing="0">
<frameset rows="",200" frameborder="no" border="0" framespacing="0">
<frame name="little" src="little.html">
<frame name="rotateFrame" src="rotate1.html">
</frameset>
<frame name="big" src="big.htm">
</frameset>
</html>
自己写出来运行一下。。
什么?该网也无法显示?倒,你有没有建立rotate1.htm,rotate2.htm,rotate3.htm这三个网页啊?
先到这了,肚子饿了,下一讲是有关自动滚屏的几点知识。等着吧,我先研究!
|