使用Jquery跟踪iframe内的点击次数

时间:2011-08-24 05:08:54

标签: javascript jquery iframe

我正试图找出一种用jquery跟踪iframe内部点击的方法。 iframe位于同一个域中,但我似乎无法使其工作,这是我的代码:

<html>
<head>
<script type="text/javascript" src="http://code.jquery.com/jquery-1.6.2.min.js"></script>
<script type="text/javascript">
    var clicks = 0;
    $('#myframe').load(function() {
        alert('loaded');
        var that = $(this);
        that.contents().find('a').bind('click', function(e) {
            e.preventDefault();
            clicks++;
            $('#clicks').html(clicks);
        });
    });
</script>
</head>
<body>
Clicks: <span id="clicks" >0</span>
<iframe id="myframe" src="test_iframe.php" width="500" height="500"></iframe>
</body>
</html>

任何可能出错的想法?​​

我在SO看到了与此问题非常相似的其他问题,但没有一个问题解决了我的问题。

更新

我已使用@Wes代码在http://www.politicos.biz/stack/iframe_click.php更新了我的代码,它适用于jsfiddle但不适用于我的网站。

3 个答案:

答案 0 :(得分:0)

在添加活动之前,请确保iframe已完全加载。

我希望处理程序可以添加.document

$('body', window.parent.frames[0].document).click( 
    function(){} 
);

OR

$('body', $('templateframe')[0].document).click( 
    function(){} 
);

答案 1 :(得分:0)

以下是一个例子:

http://jsfiddle.net/wesbos/VxA8t/1/

$(function() {
    var clicks = 0;
    $('#myframe').contents().find('a').bind('click', function(e) {
        e.preventDefault();
        clicks++;
        $('#clicks').html(clicks);
    });
});

您需要先找到链接,然后绑定到它。

您的代码应该是这样的:

$('body', $('templateframe')).contents().find('a').click(function(event) {
  alert("Link Clicked");
});

答案 2 :(得分:0)

在父框架上

,创建一个从iframe内部调用的函数。

父:

var click = 0;
function addClick()
{
    click++;
}

然后,从iframe调用它

parent.addClick();

最后,简单地参考click了解点击次数。希望这会有所帮助。