【问题标题】:Intercept Link Clicks from Frame从框架中拦截链接点击
【发布时间】:2011-04-22 14:40:17
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery frames


    【解决方案1】:
    <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 已加载。 “live”应该解决这个问题......但我现在正在做一些事情,我必须为 jQuery 编写一个自定义的 ready() 插件以确保我的框架已加载,因为我在使用 Chrome 时遇到了问题。

    Chrome 和 IE 似乎在使用 document.addEventListener("DOMContentLoaded"...

    无论如何,只要确保您的 iframe 一直加载完毕。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-20
      • 2011-02-02
      • 2011-02-13
      • 1970-01-01
      • 1970-01-01
      • 2011-01-09
      相关资源
      最近更新 更多