iframe的鼠标事件问题!又有新的要求啦!

时间:2022-08-13 16:15:06
那如果是捕获iframe里的iframe的鼠标事件怎么办呢?
用document.iframename.document.iframename.onclick是不行的啊!

11 个解决方案

#1


document.iframename.document.onclick

#2


bencalie(Bencalie):
对于只有一个iframe是可以的,但这个iframe里还有iframe就不行了啊!

#3


就是我想得到浏览器里所有地方的鼠标事件怎么办?不管是iframe还是frame、body等等,也就是说无论在哪里点击鼠标都让其执行同一个事件!!

怎么写呢?

#4


<iframe name=iframename src="about:<iframe name=iframename src=></iframe>"></iframe>
<script>
function window.onload(){
document.onclick=alert
document.iframename.document.onclick=alert
document.iframename.document.iframename.document.onclick=alert
}
</script>

#5


如果确定页面分帧的情况,可以像秋水无恨这样写,如果不确定,最好还是每个页面都链接到一个外部js

#6


我也试过啊,但不行啊!
是不是这个原因,我的是iframe里有frameset,frameset里的frame的鼠标事件就不行了!
最好是用一条语句就可以截获页面上的所有的鼠标的点击事件。
有的书里写:
window.captureEvents(Event.CLICK);
window.onclick=hideAllMenu;
但有的书却说是Nav的用法,而IE不支持。
我试了,IE总抱Event没定义的错误。
到底能不能实现呢?

#7


呵呵,递归遍历frames和document.all.tags("IFRAME")集合咯

#8


错了,只要遍历frames集合就可以了。以下测试通过:

test0.html:
-------------------------------------------------------------
<HTML>
<SCRIPT defer>
<!--
function attachFrame(f)
{
f.document.onclick=alert;
for (var i=0;i<f.frames.length;i++)
{
var ff = f.frames[i];
attachFrame(ff)
}
}
setTimeout("attachFrame(window)",100)

//-->
</SCRIPT>
<frameset cols="50%,*">
<frame src="test1.html">
</frame>
<frame src="test1.html">
</frame>
</frameset>
</HTML>
-------------------------------------------------------------

test1.html:
-------------------------------------------------------------
<HTML>
<frameset rows="50%,*">
<frame src="test2.html">
</frame>
<frame src="test2.html">
</frame>
</frameset>
</HTML>
-------------------------------------------------------------

test2.html:
-------------------------------------------------------------
<HTML>
<BODY>
<iframe src="test3.html"></iframe>
</BODY>
</HTML>
-------------------------------------------------------------

test3.html:
-------------------------------------------------------------
<HTML>
<frameset cols="50%,*">
<frame src="about:test"></frame>
<frame src="about:test"></frame>
</frameset>
</HTML>
-------------------------------------------------------------

要注意的是一定要保证attach的代码在所有的frame都下载完成了才可以。此外如果框架是用about:做的就访问不倒,不知是不是IE5的问题,现在没有IE6可以测试。

#9


test:
----------------------------------------------------------
<HTML>
<BODY>
<iframe src='about:<HTML><frameset cols="50%,*"><frame src="about:test"></frame><frame src="about:test"></frame></frameset></HTML>
'></iframe>
</BODY>
</HTML>
----------------------------------------------------------

好像又可以了,真奇怪。

#10


emu(ston) :
哈哈,厉害!!不愧是星级的人物啊!
已经可以了!我也试了!
给分!

#11


呵呵,回这个帖子的,就我的星星最少了。

#1


document.iframename.document.onclick

#2


bencalie(Bencalie):
对于只有一个iframe是可以的,但这个iframe里还有iframe就不行了啊!

#3


就是我想得到浏览器里所有地方的鼠标事件怎么办?不管是iframe还是frame、body等等,也就是说无论在哪里点击鼠标都让其执行同一个事件!!

怎么写呢?

#4


<iframe name=iframename src="about:<iframe name=iframename src=></iframe>"></iframe>
<script>
function window.onload(){
document.onclick=alert
document.iframename.document.onclick=alert
document.iframename.document.iframename.document.onclick=alert
}
</script>

#5


如果确定页面分帧的情况,可以像秋水无恨这样写,如果不确定,最好还是每个页面都链接到一个外部js

#6


我也试过啊,但不行啊!
是不是这个原因,我的是iframe里有frameset,frameset里的frame的鼠标事件就不行了!
最好是用一条语句就可以截获页面上的所有的鼠标的点击事件。
有的书里写:
window.captureEvents(Event.CLICK);
window.onclick=hideAllMenu;
但有的书却说是Nav的用法,而IE不支持。
我试了,IE总抱Event没定义的错误。
到底能不能实现呢?

#7


呵呵,递归遍历frames和document.all.tags("IFRAME")集合咯

#8


错了,只要遍历frames集合就可以了。以下测试通过:

test0.html:
-------------------------------------------------------------
<HTML>
<SCRIPT defer>
<!--
function attachFrame(f)
{
f.document.onclick=alert;
for (var i=0;i<f.frames.length;i++)
{
var ff = f.frames[i];
attachFrame(ff)
}
}
setTimeout("attachFrame(window)",100)

//-->
</SCRIPT>
<frameset cols="50%,*">
<frame src="test1.html">
</frame>
<frame src="test1.html">
</frame>
</frameset>
</HTML>
-------------------------------------------------------------

test1.html:
-------------------------------------------------------------
<HTML>
<frameset rows="50%,*">
<frame src="test2.html">
</frame>
<frame src="test2.html">
</frame>
</frameset>
</HTML>
-------------------------------------------------------------

test2.html:
-------------------------------------------------------------
<HTML>
<BODY>
<iframe src="test3.html"></iframe>
</BODY>
</HTML>
-------------------------------------------------------------

test3.html:
-------------------------------------------------------------
<HTML>
<frameset cols="50%,*">
<frame src="about:test"></frame>
<frame src="about:test"></frame>
</frameset>
</HTML>
-------------------------------------------------------------

要注意的是一定要保证attach的代码在所有的frame都下载完成了才可以。此外如果框架是用about:做的就访问不倒,不知是不是IE5的问题,现在没有IE6可以测试。

#9


test:
----------------------------------------------------------
<HTML>
<BODY>
<iframe src='about:<HTML><frameset cols="50%,*"><frame src="about:test"></frame><frame src="about:test"></frame></frameset></HTML>
'></iframe>
</BODY>
</HTML>
----------------------------------------------------------

好像又可以了,真奇怪。

#10


emu(ston) :
哈哈,厉害!!不愧是星级的人物啊!
已经可以了!我也试了!
给分!

#11


呵呵,回这个帖子的,就我的星星最少了。