我想让iframe页面(main.asp)自动刷新,但是当用户点击某个A link 或 鼠标移出iframe外 后能自动延时9秒种。
我在框架页(index.asp)上定义了iframe的事件onclick和onmouseout,并且在刚开始的时候有效。但是当iframe刷新后,那些事件就失效了。在网上找了大半夜,都没有答案(也许我搜索方法不对,请高手指正),郁闷了半个晚上 -\-附index.asp部分代码:<iframe src="main.asp" border="0" width="100%" height="1200" SCROLLING="yes" frameborder="0" marginwidth="1" marginheight="1" name="content1"></iframe>
<script language="javascript">
var delaytime,timename;
delaytime = 3000;
staytime = 0;//延时功能实现变量
addtime = 3;//每点击一次<A link>增加addtime*delaytime秒钟的等待时间
setInterval('shuaxin()',delaytime);
function shuaxin(){//判断是不刷新,英文不好
var grade = GetCookie("gbook").grade;//06net2
if ("" == grade && staytime-- <= 0){
window.frames[0].location.href="main.asp";
}
}
document.body.onclick = function(){//用户在父面上点击,加延时
staytime = addtime;
}
document.body.onload = function(){//填加iframe的事件处理函数,但是在iframe刷新后,就失效了,,,
document.frames[0].document.body.onclick=function(){
staytime = addtime;
}
document.frames[0].document.body.onmouseout=function(){
staytime = addtime/2;
}
}
/**/////////
//摘自csdn.com论坛,详见:http://topic.csdn.net/u/20081021/10/09d513d5-051e-4e1c-9093-5ab3e082d8f0.html
function GetCookie(name)//取cookie值,返回的是一个JSON数组;类似于 response.cookie["book"]下的所有子对象——王永安 释
{
m=document.cookie;
re1=new RegExp("(?!\w)"+name+"=[^;]+","");
re2=new RegExp("^"+name+"=","");
try
{
var a=m.match(re1)[0];
}
catch(e)
{
return null
}
eval("var o="+a.replace(re2,"{").replace(/&/g,"',").replace(/=/g,":\'")+"'}");
return o;
}
</script>这是我第一次提问,不懂规矩之处多多指点。
我在框架页(index.asp)上定义了iframe的事件onclick和onmouseout,并且在刚开始的时候有效。但是当iframe刷新后,那些事件就失效了。在网上找了大半夜,都没有答案(也许我搜索方法不对,请高手指正),郁闷了半个晚上 -\-附index.asp部分代码:<iframe src="main.asp" border="0" width="100%" height="1200" SCROLLING="yes" frameborder="0" marginwidth="1" marginheight="1" name="content1"></iframe>
<script language="javascript">
var delaytime,timename;
delaytime = 3000;
staytime = 0;//延时功能实现变量
addtime = 3;//每点击一次<A link>增加addtime*delaytime秒钟的等待时间
setInterval('shuaxin()',delaytime);
function shuaxin(){//判断是不刷新,英文不好
var grade = GetCookie("gbook").grade;//06net2
if ("" == grade && staytime-- <= 0){
window.frames[0].location.href="main.asp";
}
}
document.body.onclick = function(){//用户在父面上点击,加延时
staytime = addtime;
}
document.body.onload = function(){//填加iframe的事件处理函数,但是在iframe刷新后,就失效了,,,
document.frames[0].document.body.onclick=function(){
staytime = addtime;
}
document.frames[0].document.body.onmouseout=function(){
staytime = addtime/2;
}
}
/**/////////
//摘自csdn.com论坛,详见:http://topic.csdn.net/u/20081021/10/09d513d5-051e-4e1c-9093-5ab3e082d8f0.html
function GetCookie(name)//取cookie值,返回的是一个JSON数组;类似于 response.cookie["book"]下的所有子对象——王永安 释
{
m=document.cookie;
re1=new RegExp("(?!\w)"+name+"=[^;]+","");
re2=new RegExp("^"+name+"=","");
try
{
var a=m.match(re1)[0];
}
catch(e)
{
return null
}
eval("var o="+a.replace(re2,"{").replace(/&/g,"',").replace(/=/g,":\'")+"'}");
return o;
}
</script>这是我第一次提问,不懂规矩之处多多指点。
现在iframe的document已经不是原来那个document了,那个onclick自然也不再起作用.
还提示:relod()函数里的: 'document.frames.0.document.body' 为空或不是对象 var delaytime,timename;
delaytime = 3000;
staytime = 0;
addtime = 3;//每点击一次<A link>增加addtime*delaytime秒钟的等待时间
setInterval('shuaxin()',delaytime);
setInterval('relod()',200);//注册iframe事件, 无奈的解决方法还是无效
function shuaxin(){
var grade = GetCookie("gbook").grade;//06net2
if (!grade && staytime-- <= 0){
window.frames[0].location.href="main.asp";
}
} document.body.onload = function(){
document.frames[0].document.body.onload = relod();
}
function relod(){//重新注册iframe事件的函数
document.frames[0].document.body.onclick = function(){
staytime = addtime;
ts();
}
document.frames[0].document.body.onmouseout=function(){
ts();
staytime = addtime/2;
}
}
function ts(){//用于test,返回事件绑定的函数代码
////
document.getElementById("ts").innerHTML += "*"+document.frames[0].document.body.onclick+"<br />";
}
则父页面上绑定的事件便失效了,有没有办法解决?在不修改子页面代码的前提下
感谢你的关注。
这样,iframe中不用修改代码.
能不能具体点说,比如举例子我用过这样的
document.frames[0].document.body.onload = function(){……}
这句经常会报“document.frames.0.document.body”为空或不是对象