2010-10-07 100 views
0

我有一个旧的时尚页面,使用包含顶部框架和底部框架的框架集。该框架是“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”链接。我想我可以为它添加一个准备好的事件,然后实时绑定点击事件,但它不起作用。有任何想法吗?

注意:这些文件都在同一个域中,因此这不是XSS问题。

回答

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一个

噢....你一定要确保的iframe加载。 “活着”应该照顾这一点...但我正在做一些事情,现在我必须为jQuery编写定制ready()插件,以确保我的框架已加载,因为我遇到了Chrome的问题。

Chrome和IE似乎跳枪上与document.addEventListener(“DOMContentLoaded” ......我相信这是什么就绪()函数jQuery中使用。

不管怎么说,只要确保你的iframes一路装入。