frameset之间脚本调用

<frameset rows="20%,*">
    <frame name="topFrame" scrolling="NO" noresize src="toppage.htm" >
    <frameset cols="18%,*">
    <frame name="leftFrame" noresize src="leftpage.htm">
    <frame name="mainFrame" src="mainpage.htm">
    </frameset>
    </frameset> 
 


   
    B框架leftFrame调用C框架的函数:
    C框架mainFrame函数为:

<script language="Javascript">
    <!--
    function htest(){
    document.write("嗨!你好!这是通过B窗口控制而写的字。")
    }
    -->
    </script>
 

   
    B框架leftFrame调用按钮:

<input type="button" value="在C窗口中写字" οnclick="parent.mainFrame.htest()">
 

    窗口关系的确定原则是:当前窗口分割出来的窗口为当前窗口的“子窗口”(children),那么当前窗口就是分割出来窗口的“父窗口”(parent)。

摘自 http://www.zp21cn.com/Main/Article/Article_Show.asp?ArticleID=264&ClassID=97

这段代码的主要作用是实现自动刷新页面并保持原先的滚动位置。但是,在使用这段代码时需要注意以下几点: 1. 由于代码中使用了 `location.replace(current)`,所以如果你在控制台中运行这个代码,会导致当前页面被替换为当前页面的地址,因此你需要在运行这个代码之前将当前页面的地址复制到剪贴板中,然后在控制台中运行这个代码。 2. 代码中的 `setTimeout` 会不断地调用 `reload()` 函数,导致页面不断地被刷新。为了避免这个问题,你可以将 `setTimeout` 修改为 `setInterval`,并在页面加载时清除定时器。 3. 代码中的 `setScroll` 函数在设置滚动位置时,使用的是 `window.scrollTo(scrollX, scrollY)`,但是在调用 `setScroll` 函数时,传递的参数是 `setScroll(currentScrollPosition)`,这可能会导致滚动位置设置失败。你可以将 `setScroll(currentScrollPosition)` 修改为 `setScroll(scrollX, scrollY)`。 下面是经过修改后的代码: ``` var timeout = prompt("设置刷新时间间隔[S]"); var current = location.href; if (timeout > 0) { var intervalId = setInterval(reload, 1000 * timeout); } else { location.replace(current); } function reload() { var scrollX = document.body.scrollLeft; // 获取之前页面的滚动位置 var scrollY = document.body.scrollTop; var currentScrollPosition = window.pageYOffset || document.documentElement.scrollTop; var fr4me = '<frameset cols=\'*\'>\n<frame src=\'' + current + '\' onload=\'setScroll(' + scrollX + ',' + scrollY + ')\'/>'; fr4me += '</frameset>'; with (document) { write(fr4me); void (close()); } } function setScroll(scrollX, scrollY) { // 设置新页面的滚动位置为之前页面的滚动位置 window.scrollTo(scrollX, scrollY); clearInterval(intervalId); // 清除定时器 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值