我有一个旧时尚页面,它使用包含顶部框架和底部框架的框架集。框架集在“index.html”中定义,我的代码如下:
<html>
<head>
<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script>
$(document).ready(function(){
$('#mainFrame').ready(function() {
$('#mainFrame a').live('click', function() {
alert('u click');
return false;
});
});
});
</script>
</head>
<frameset id="main" rows="125,*" cols="*">
<frame src="header.html" name="headerFrame" id="headerFrame" />
<frame src="main.html" name="mainFrame" id="mainFrame" />
</frameset>
</html>
我希望能够拦截点击框架“mainFrame”的链接。我想我可以为它添加一个ready事件然后实时绑定点击事件但它不起作用。有什么想法吗?
注意:这些文件都在同一个域中,因此这不是XSS问题。
答案 0 :(得分:2)
<script>
$(document).ready(function(){
$('#mainFrame').ready(function() {
var f = document.getElementById('mainFrame').contentWindow.document;
$('a', f).live('click', function() {
alert('u click');
return false;
});
});
});
</script>
你只需要在jQuery语句中添加一个上下文,告诉它在哪里寻找#mainFrame a
哦是的....你肯定需要确保加载了iframe。 “实时”应该照顾...但我现在正在做一些事情,我必须为jQuery编写一个自定义ready()插件,以确保我的框架被加载,因为我在使用Chrome时遇到了麻烦。 / p>
Chrome和IE似乎在使用document.addEventListener(“DOMContentLoaded”......),我相信它是jQuery中的ready()函数使用。
无论如何,只需确保你的iframe一直加载。