截取来自Frame的链接点击

时间:2010-10-07 21:33:31

标签: javascript jquery frames

我有一个旧时尚页面,它使用包含顶部框架和底部框架的框架集。框架集在“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问题。

1 个答案:

答案 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一直加载。